CodeGym/Blog Java/rawak/Aksara Java Escape
John Squirrels
Tahap
San Francisco

Aksara Java Escape

Diterbitkan dalam kumpulan
Hai! Dalam pelajaran sebelum ini, kita telah membiasakan diri dengan rentetan teks, yang diwakili oleh kelas String di Jawa. Seperti yang anda mungkin ingat, rentetan ialah urutan aksara. Aksara ini boleh berupa apa-apa huruf, angka, tanda baca dan sebagainya. Perkara utama semasa membuat rentetan ialah keseluruhan urutan mesti disertakan dalam tanda petikan:
public class Main {
   public static void main(String[] args) {
       String alex = new String ("My name is Alex. I'm 20!");
   }
}
Tetapi apa yang kita lakukan jika kita perlu mencipta rentetan yang mesti mengandungi tanda petikan? Sebagai contoh, katakan kami ingin memberitahu dunia tentang buku kegemaran anda:
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is "Twilight" by Stephanie Meyer");
   }
}
Nampaknya pengkompil tidak berpuas hati tentang sesuatu! Pada pendapat anda, apakah masalahnya? Dan apa kaitannya dengan tanda petikan? Sebenarnya, semuanya sangat mudah. Pengkompil mentafsirkan tanda petikan dengan cara yang sangat khusus, iaitu ia mengharapkan rentetan dibalut di dalamnya. Dan setiap kali pengkompil melihat ", ia menjangkakan bahawa tanda petikan akan diikuti oleh tanda petikan kedua, dan kandungan di antara mereka ialah teks rentetan yang akan dibuat oleh pengkompil. Dalam kes kami, tanda petikan di sekeliling perkataan "Twilight" berada di dalam tanda petikan lain . Apabila pengkompil mencapai sekeping teks ini, ia langsung tidak memahami apa yang diharapkan untuk dilakukan. Tanda petikan menunjukkan bahawa rentetan mesti dibuat. Tetapi itulah pengkompil sudahmelakukan! Inilah sebabnya: secara ringkasnya, pengkompil menjadi keliru tentang perkara yang diharapkan untuk dilakukan. "Tanda petikan lain? Adakah ini sejenis kesilapan? Saya sudah mencipta rentetan! Atau patutkah saya mencipta satu lagi? Argh!...:/" Kita perlu memberitahu pengkompil apabila tanda petikan adalah arahan ( "buat rentetan!") dan apabila ia hanyalah watak ("paparkan perkataan "Twilight" bersama-sama dengan tanda petikan!"). Untuk melakukan ini, Java menggunakan character escaping . Ini dicapai menggunakan simbol khas: \ . Simbol ini biasanya dipanggil "slash belakang". Di Jawa, garis miring terbalik digabungkan dengan aksara untuk "melarikan diri" dipanggil jujukan kawalan . Sebagai contoh, \"ialah urutan kawalan untuk memaparkan tanda petikan pada skrin. Apabila menemui binaan ini dalam kod anda, pengkompil akan memahami bahawa ini hanyalah tanda petikan yang perlu dipaparkan pada skrin. Mari cuba tukar kod kami dengan buku:
public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is \"Twilight\" by Stephanie Meyer");
       System.out.println(myFavoriteBook);
   }
}
Kami telah menggunakan \ untuk melepaskan dua tanda petikan "dalaman" kami. Mari cuba jalankan kaedah main() ... Output konsol:
My favorite book is "Twilight" by Stephanie Meyer
Cemerlang! Kod itu berfungsi dengan tepat seperti yang kami mahukannya! Tanda petikan bukanlah satu-satunya watak yang mungkin kita perlukan untuk melarikan diri. Katakan kita ingin memberitahu seseorang tentang kerja kita:
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);
   }
}
Satu lagi kesilapan! Boleh teka kenapa? Sekali lagi, pengkompil tidak faham apa yang perlu dilakukan. Lagipun, pengkompil tidak tahu \ sebagai apa-apa selain jujukan kawalan ! Ia menjangkakan garis miring ke belakang akan diikuti oleh watak tertentu yang mesti ditafsirkan dengan cara yang istimewa (seperti tanda petikan). Tetapi, dalam kes ini, \ diikuti oleh huruf biasa. Jadi pengkompil lagi keliru. Apa yang patut kita buat? Perkara yang sama seperti sebelumnya: kami hanya menambah satu lagi \ pada \ kami !
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);

   }
}
Mari lihat apa yang kita dapat: Output konsol:
My work files are in D:\Work Projects\java
Super! Pengkompil segera menentukan bahawa \ adalah aksara biasa yang harus dipaparkan bersama-sama dengan yang lain. Java mempunyai cukup banyak jujukan kawalan. Berikut senarai penuhnya:
  • \t - tab.
  • \b - ruang belakang (langkah ke belakang dalam teks atau pemadaman satu aksara).
  • \n - baris baharu.
  • \r - pemulangan pengangkutan. ()
  • \f - suapan borang.
  • \' petikan tunggal.
  • \" petikan berganda.
  • \\ garis miring ke belakang.
Oleh itu, jika pengkompil menemui \n dalam teks, ia memahami bahawa ini bukan sekadar simbol dan huruf untuk dipaparkan pada konsol, tetapi sebaliknya arahan khas untuk "bergerak ke baris baharu!". Sebagai contoh, ini mungkin berguna jika kita ingin memaparkan sebahagian daripada puisi:
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);
   }
}
Inilah yang kami dapat: Output konsol:
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...
Hanya apa yang kami mahu! Pengkompil mengiktiraf urutan melarikan diri dan mengeluarkan petikan puisi pada 4 baris.

Melarikan diri aksara Unicode

Satu lagi topik penting yang perlu anda ketahui berkaitan dengan aksara melarikan diri ialah Unicode. Unicode ialah pengekodan aksara standard yang merangkumi simbol hampir setiap bahasa bertulis di dunia. Dalam erti kata lain, ia adalah senarai kod khas yang mewakili hampir setiap aksara dalam mana-mana bahasa! Sememangnya, ini adalah senarai yang sangat panjang dan tiada siapa yang mempelajarinya dengan hati :) Jika anda ingin tahu dari mana asalnya dan mengapa ia menjadi perlu, baca artikel bermaklumat ini: https://docs.oracle.com/javase/tutorial/ i18n/text/unicode.html Semua kod aksara Unicode mempunyai bentuk " u+<digit perenambelasan>". Contohnya, simbol hak cipta yang terkenal diwakili oleh u00A9. Jadi, jika anda perlu menggunakan aksara ini semasa bekerja dengan teks dalam Java, anda boleh melepaskannya dalam teks anda! Contohnya, kami mahu untuk memaklumkan semua orang bahawa CodeGym memiliki hak cipta untuk pelajaran ini:
public class Main {
   public static void main(String[] args) {
       System.out.println("\"Escaping characters\", \u00A9 2019 CodeGym");
   }
}
Output konsol:
"Escaping characters", © 2019 CodeGym
Hebat, semuanya berjaya! Tetapi ia bukan hanya tentang simbol khas! Anda boleh menggunakan Unicode dan aksara melarikan diri untuk mengekod teks yang ditulis serentak dalam bahasa yang berbeza. Malah teks yang ditulis dalam beberapa dialek berbeza dalam bahasa yang sama!
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 konsol:
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.
Dalam contoh ini, kami menggunakan kod aksara untuk membina rentetan yang terdiri daripada bahasa Inggeris dan tiga(!) jenis aksara Cina yang berbeza — tradisional, dipermudahkan dan Latin (Pinyin). Dan itu kira-kira meringkaskannya! Kini anda sudah cukup mengetahui tentang melarikan diri daripada aksara untuk menggunakan alat hebat ini dalam kerja anda :) Untuk mengukuhkan perkara yang anda pelajari, kami cadangkan anda menonton pelajaran video daripada Kursus Java kami

Bacaan lanjut:

Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi