CodeGym /Java Blog /Random /Mga Character ng Java Escape
John Squirrels
Antas
San Francisco

Mga Character ng Java Escape

Nai-publish sa grupo
Hi! Sa nakaraang mga aralin, nakilala na natin ang mga string ng teksto, na kinakatawan ng klase ng String sa Java. Tulad ng malamang na naaalala mo, ang isang string ay isang pagkakasunud-sunod ng mga character. Ang mga character na ito ay maaaring maging anumang mga titik, numeral, mga bantas at iba pa. Ang pangunahing bagay kapag lumilikha ng isang string ay ang buong pagkakasunud-sunod ay dapat na nakapaloob sa mga panipi:

public class Main {
   public static void main(String[] args) {
       String alex = new String ("My name is Alex. I'm 20!");
   }
}
Ngunit ano ang gagawin natin kung kailangan nating lumikha ng isang string na dapat mismo ay naglalaman ng mga panipi? Halimbawa, ipagpalagay na gusto naming sabihin sa mundo ang tungkol sa iyong paboritong libro:

public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is "Twilight" by Stephanie Meyer");
   }
}
Tila ang compiler ay hindi nasisiyahan sa isang bagay! Ano sa palagay mo ang maaaring maging problema? At ano ang kinalaman nito sa mga panipi? Sa katunayan, ang lahat ng ito ay napaka-simple. Binibigyang-kahulugan ng compiler ang mga panipi sa isang napaka-espesipikong paraan, ibig sabihin, inaasahan nitong balot sa kanila ang mga string. At sa tuwing makikita ng compiler ", inaasahan nito na ang panipi ay susundan ng pangalawang panipi, at ang nilalaman sa pagitan ng mga ito ay ang teksto ng isang string na gagawin ng compiler. Sa aming kaso, ang mga panipi sa paligid ang salitang "Twilight" ay nasa loob ng iba pang mga panipi . Kapag naabot ng compiler ang piraso ng tekstong ito, hindi nito nauunawaan kung ano ang inaasahang gawin nito. Iminumungkahi ng quotation mark na dapat gumawa ng string. Ngunit iyan ang compiler naginagawa! Narito kung bakit: sa pagsasalita lang, nalilito ang compiler tungkol sa kung ano ang inaasahang gawin nito. "Isa pang panipi? Ito ba ay isang uri ng pagkakamali? Gumagawa na ako ng isang string! O dapat ba akong gumawa ng isa pa? Argh!...:/" Kailangan nating ipaalam sa compiler kapag ang isang panipi ay isang utos ( "lumikha ng isang string!") at kapag ito ay isang karakter lamang ("ipakita ang salitang "Twilight" kasama ng mga panipi!"). Upang gawin ito, gumagamit ang Java ng character escaping . Nagagawa ito gamit ang isang espesyal na simbolo: \ . Ang simbolo na ito ay karaniwang tinatawag na "backslash". Sa Java, ang isang backslash na sinamahan ng isang character na "i-escape" ay tinatawag na isang control sequence . Halimbawa, \"ay isang control sequence para sa pagpapakita ng mga panipi sa screen. Sa pagharap sa construct na ito sa iyong code, mauunawaan ng compiler na isa lamang itong quotation mark na dapat ipakita sa screen. Subukan nating baguhin ang ating code gamit ang aklat:

public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is \"Twilight\" by Stephanie Meyer");
       System.out.println(myFavoriteBook);
   }
}
Ginamit namin ang \ upang makatakas sa aming dalawang "internal" na panipi. Subukan nating patakbuhin ang main() method... Console output:
My favorite book is "Twilight" by Stephanie Meyer
Magaling! Ang code ay gumana nang eksakto kung paano namin ito gusto! Ang mga panipi ay hindi lamang ang mga karakter na maaaring kailanganin nating takasan. Ipagpalagay na gusto naming sabihin sa isang tao ang tungkol sa aming trabaho:

public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("My work files are in D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
Isa pang error! Maaari mo bang hulaan kung bakit? Muli, hindi naiintindihan ng compiler kung ano ang gagawin. Pagkatapos ng lahat, hindi alam ng compiler ang \ bilang anumang bagay maliban sa isang control sequence ! Inaasahan nito na ang backslash ay susundan ng isang tiyak na karakter na dapat nitong bigyang kahulugan sa isang espesyal na paraan (tulad ng isang panipi). Ngunit, sa kasong ito, ang \ ay sinusundan ng mga ordinaryong titik. Kaya nalilito na naman ang compiler. Ano ang dapat nating gawin? Eksaktong kapareho ng dati: nagdaragdag lang kami ng isa pang \ sa aming \ !

public class Main {

   public static void main(String[] args) {

       String workFiles= new String ("My work files are in D:\\Work Projects\\java");
       System.out.println(workFiles);

   }
}
Tingnan natin kung ano ang makukuha natin: Console output:
My work files are in D:\Work Projects\java
Super! Agad na tinutukoy ng compiler na ang \ ay mga ordinaryong character na dapat ipakita kasama ng iba pa. Ang Java ay may napakaraming control sequence. Narito ang buong listahan:
  • \t - tab.
  • \b - backspace (isang hakbang pabalik sa teksto o pagtanggal ng isang character).
  • \n - bagong linya.
  • \r - pagbabalik ng karwahe. ()
  • \f - form ng feed.
  • \' nag-iisang quote.
  • \" dobleng quote.
  • \\ backslash.
Kaya, kung ang compiler ay nakatagpo ng \n sa teksto, naiintindihan nito na ito ay hindi lamang isang simbolo at isang liham na ipapakita sa console, ngunit sa halip ay isang espesyal na utos na "lumipat sa isang bagong linya!". Halimbawa, ito ay maaaring maging kapaki-pakinabang kung gusto nating ipakita ang bahagi ng isang tula:

public class Main {
   public static void main(String[] args) {
       String byron = new String ("She walks in beauty, like the night, \nOf cloudless climes and starry skies\nAnd all that's best of dark and bright\nMeet in her aspect and her eyes...");
       System.out.println(byron);
   }
}
Narito ang makukuha natin: Output ng console:
She walks in beauty, like the night, 
Of cloudless climes and starry skies 
And all that's best of dark and bright 
Meet in her aspect and her eyes...
Kung ano lang ang gusto namin! Nakilala ng compiler ang escape sequence at naglabas ng sipi ng tula sa 4 na linya.

Tumakas sa mga character na Unicode

Ang isa pang mahalagang paksa na kailangan mong malaman tungkol sa kaugnay ng mga escape character ay ang Unicode. Ang Unicode ay isang karaniwang pag-encode ng character na kinabibilangan ng mga simbolo ng halos lahat ng nakasulat na wika sa mundo. Sa madaling salita, ito ay isang listahan ng mga espesyal na code na kumakatawan sa halos bawat karakter sa anumang wika! Naturally, ito ay isang napakahabang listahan at walang sinuman ang natututo nito sa pamamagitan ng puso :) Kung gusto mong malaman kung saan ito nanggaling at kung bakit ito naging kinakailangan, basahin ang impormasyong artikulong ito: https://docs.oracle.com/javase/tutorial/ i18n/text/unicode.html Lahat ng Unicode character code ay may form na " u+<hexadecimal digit>". Halimbawa, ang kilalang simbolo ng copyright ay kinakatawan ng u00A9. Kaya, kung kailangan mong gamitin ang character na ito kapag nagtatrabaho sa text sa Java, maaari mong i-escape ito sa iyong text! Halimbawa, gusto namin upang ipaalam sa lahat na ang CodeGym ay nagmamay-ari ng copyright sa araling ito:

public class Main {
   public static void main(String[] args) {
       System.out.println("\"Escaping characters\", \u00A9 2019 CodeGym");
   }
}
Output ng console:
"Escaping characters", © 2019 CodeGym
Mahusay, nagtagumpay ang lahat! Ngunit ito ay hindi lamang tungkol sa mga espesyal na simbolo! Maaari mong gamitin ang Unicode at escape character para i-encode ang text na nakasulat nang sabay-sabay sa iba't ibang wika. At maging ang tekstong nakasulat sa iba't ibang diyalekto ng parehong wika!

public class Main {
   public static void main(String[] args) {

       System.out.println("\u004d\u0061\u006f \u005a\u0065\u0064\u006f\u006e\u0067 " + 

               "\u0028\u0054\u0072\u0061\u0064\u0069\u0074\u0069\u006f\u006e\u0061\u006c " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6fa4\u6771\u002c " +

               "\u0053\u0069\u006d\u0070\u006c\u0069\u0066\u0069\u0065\u0064 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6cfd\u4e1c\u002c " +

               "\u0050\u0069\u006e\u0079\u0069\u006e\u003a \u004d\u00e1\u006f " +

               "\u005a\u00e9\u0064\u014d\u006e\u0067\u0029 \u0077\u0061\u0073 \u0061 " +

               "\u0032\u0030\u0074\u0068\u002d\u0063\u0065\u006e\u0074\u0075\u0072\u0079 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065 " +

                "\u0073\u0074\u0061\u0074\u0065\u0073\u006d\u0061\u006e\u002c " +

               "\u0070\u006f\u006c\u0069\u0074\u0069\u0063\u0069\u0061\u006e\u002c " +

               "\u0061\u006e\u0064 \u0074\u0068\u0065 \u0063\u0068\u0069\u0065\u0066 " +

               "\u0074\u0068\u0065\u006f\u0072\u0065\u0074\u0069\u0063\u0069\u0061\u006e " +

               "\u006f\u0066 \u004d\u0061\u006f\u0069\u0073\u006d\u002e");
   }
}
Output ng console:
Mao Zedong (Traditional Chinese: 毛澤東, Simplified Chinese: 毛泽东, Pinyin: Máo Zédōng) was a 20th-century Chinese statesman, politician, and the chief theoretician of Maoism.
Sa halimbawang ito, gumamit kami ng mga character code para bumuo ng string na binubuo ng English at tatlong(!) iba't ibang uri ng Chinese character — tradisyonal, pinasimple at Latin (Pinyin). At iyan tungkol sa sums up! Ngayon ay sapat na ang alam mo tungkol sa pagtakas sa mga character upang magamit ang mahusay na tool na ito sa iyong trabaho :) Upang mapalakas ang iyong natutunan, iminumungkahi naming manood ka ng isang video lesson mula sa aming Java Course

Higit pang pagbabasa:

Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION