CodeGym /Java Blogu /Rastgele /Java Kaçış Karakterleri
John Squirrels
Seviye
San Francisco

Java Kaçış Karakterleri

grupta yayınlandı
MERHABA! Önceki derslerde, Java'da String sınıfı tarafından temsil edilen metin dizileriyle tanışmıştık . Muhtemelen hatırladığınız gibi, bir dizi bir karakter dizisidir. Bu karakterler herhangi bir harf, rakam, noktalama işareti vb. olabilir. Bir dize oluştururken ana şey, tüm dizinin tırnak işaretleri içine alınması gerektiğidir:

public class Main {
   public static void main(String[] args) {
       String alex = new String ("My name is Alex. I'm 20!");
   }
}
Ancak, tırnak işaretleri içermesi gereken bir dize oluşturmamız gerekirse ne yapmalıyız? Örneğin, dünyaya en sevdiğiniz kitaptan bahsetmek istediğimizi varsayalım:

public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is "Twilight" by Stephanie Meyer");
   }
}
Görünüşe göre derleyici bir şeyden memnun değil! Sizce sorun ne olabilir? Ve bunun tırnak işaretleri ile ne ilgisi var? Aslında, her şey çok basit. Derleyici, tırnak işaretlerini çok özel bir şekilde yorumlar, yani dizelerin bunlara sarılmasını bekler. Ve derleyici " ifadesini her gördüğünde, tırnak işaretinden sonra ikinci bir tırnak işaretinin gelmesini ve aralarındaki içeriğin derleyici tarafından oluşturulacak bir dizgenin metni olmasını bekler. Bizim durumumuzda tırnak işaretleri etrafındaki "Alacakaranlık" kelimesi diğer tırnak işaretleri içindedir.Derleyici bu metin parçasına ulaştığında, ne yapması beklendiğini anlamıyor.Tırnak işareti, bir dize oluşturulması gerektiğini gösteriyor.Ama derleyicinin yaptığı da bu. çoktanyapmak! İşte nedeni: Basitçe söylemek gerekirse, derleyicinin ne yapması beklendiği konusunda kafası karışır. "Başka bir tırnak işareti mi? Bu bir tür hata mı? Zaten bir dize oluşturuyorum! Yoksa başka bir tane mi oluşturmalıyım? Ahh!...:/" Tırnak işaretinin bir komut () olduğunu derleyiciye bildirmemiz gerekir ( "bir dize oluştur!") ve yalnızca bir karakter olduğunda ("Alacakaranlık" kelimesini tırnak işaretleri ile birlikte göster!). Bunu yapmak için Java karakter çıkışını kullanır . Bu, özel bir sembol kullanılarak gerçekleştirilir: \ . Bu sembol normalde "ters eğik çizgi" olarak adlandırılır. Java'da, "kaçınılacak" bir karakterle birleştirilmiş bir ters eğik çizgi, kontrol dizisi olarak adlandırılır . Örneğin, \"ekranda tırnak işaretleri görüntülemek için bir kontrol dizisidir. Kodunuzda bu yapıyla karşılaştığında, derleyici bunun sadece ekranda görüntülenmesi gereken bir tırnak işareti olduğunu anlayacaktır. Kitapla kodumuzu değiştirmeyi deneyelim:

public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is \"Twilight\" by Stephanie Meyer");
       System.out.println(myFavoriteBook);
   }
}
İki "dahili" tırnak işaretimizden kaçınmak için \ kullandık . main() yöntemini çalıştırmayı deneyelim ... Konsol çıktısı:
My favorite book is "Twilight" by Stephanie Meyer
Harika! Kod tam olarak istediğimiz gibi çalıştı! Kaçmamız gereken tek karakter tırnak işaretleri değildir. Birisine işimizden bahsetmek istediğimizi varsayalım:

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);
   }
}
Başka bir hata! Nedenini tahmin edebilir misin? Bir kez daha, derleyici ne yapacağını anlamıyor. Ne de olsa, derleyici \' yi bir kontrol dizisinden başka bir şey olarak bilmez ! Ters eğik çizgiyi, bir şekilde özel bir şekilde (tırnak işareti gibi) yorumlaması gereken belirli bir karakterin takip etmesini bekler. Ancak bu durumda \' den sonra sıradan harfler gelir. Böylece derleyicinin kafası yine karışır. Ne yapmalıyız? Daha önce olduğu gibi tamamen aynı: \ ' a bir \ daha ekliyoruz !

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);

   }
}
Bakalım ne elde edeceğiz: Konsol çıktısı:
My work files are in D:\Work Projects\java
Süper! Derleyici hemen \' nin geri kalanıyla birlikte görüntülenmesi gereken sıradan karakterler olduğunu belirler. Java oldukça fazla kontrol dizisine sahiptir. İşte tam liste:
  • \t - sekme.
  • \b - geri silme (metinde bir adım geri gitme veya tek bir karakterin silinmesi).
  • \n - yeni satır.
  • \r - satır başı. ()
  • \f - form beslemesi.
  • \' tek alıntı.
  • \" çift tırnak.
  • \\ ters eğik çizgi.
Böylece derleyici metinde \ n ile karşılaşırsa bunun sadece konsolda görüntülenecek bir sembol ve harf değil, daha çok "yeni bir satıra geç!" için özel bir komut olduğunu anlar. Örneğin, bir şiirin bir bölümünü görüntülemek istiyorsak bu yararlı olabilir:

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);
   }
}
Elde ettiğimiz şey şu: Konsol çıktısı:
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...
Tam istediğimiz şey! Derleyici kaçış dizisini tanıdı ve şiirden 4 satırlık bir alıntı yaptı.

Unicode karakterlerden kaçış

Kaçış karakterleriyle bağlantılı olarak bilmeniz gereken bir diğer önemli konu da Unicode'dur. Unicode, dünyadaki hemen hemen her yazılı dilin sembollerini içeren standart bir karakter kodlamasıdır. Başka bir deyişle, herhangi bir dildeki hemen hemen her karakteri temsil eden özel kodların bir listesidir! Doğal olarak bu çok uzun bir liste ve kimse ezbere öğrenmiyor :) Nereden geldiğini ve neden gerekli hale geldiğini öğrenmek istiyorsanız şu bilgilendirici makaleyi okuyun: https://docs.oracle.com/javase/tutorial/ i18n/text/unicode.html Tüm Unicode karakter kodları " u biçimindedir.+<onaltılık basamak>". Örneğin, iyi bilinen telif hakkı simgesi u00A9 ile temsil edilir. Bu nedenle, Java'da metinle çalışırken bu karakteri kullanmanız gerekirse, metninizde ondan kaçabilirsiniz! Örneğin, istiyoruz CodeGym'in bu dersin telif hakkına sahip olduğunu herkese bildirmek için:

public class Main {
   public static void main(String[] args) {
       System.out.println("\"Escaping characters\", \u00A9 2019 CodeGym");
   }
}
Konsol çıktısı:
"Escaping characters", © 2019 CodeGym
Harika, her şey yolunda gitti! Ama bu sadece özel sembollerle ilgili değil! Aynı anda farklı dillerde yazılmış metni kodlamak için Unicode ve kaçış karakterlerini kullanabilirsiniz. Ve hatta aynı dilin birkaç farklı lehçesinde yazılmış metinler bile!

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");
   }
}
Konsol çıktısı:
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.
Bu örnekte, İngilizce ve üç(!) farklı Çince karakter türünden (geleneksel, basitleştirilmiş ve Latince (Pinyin)) oluşan bir dizi oluşturmak için karakter kodlarını kullandık. Ve bu, her şeyi özetliyor! Artık karakterlerden kaçma konusunda bu harika aracı işinizde kullanacak kadar bilgi sahibisiniz :) Öğrendiklerinizi pekiştirmek için Java Kursumuzdan bir video dersi izlemenizi öneririz.

Daha fazla okuma:

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