Alıştırma - Karakter kaçış dizilerini kullanarak dizeleri birleştirme
Hem İngilizce hem de Japonca faturalar oluşturacak bir komut satırı aracının bir kopyasını oluşturmanın istendiğini varsayalım. Henüz faturaları oluşturan gerçek işlevi oluşturmanız gerekmez. Komut satırı arabirimini yalnızca faturalama departmanındaki iç müşterilere onay için sağlamanız gerekir. Yöneticiniz, aracın mevcut ilerleme durumunu netleştirmek için biçimlendirme eklediğinizden emin olmanızı istedi. Yöneticiniz, Japon kullanıcılara nasıl fatura oluşturulacağı hakkında Japonca yönergeler sağlamanızı da istedi.
Alıştırma - C'de değişmez dizeleri biçimlendirme#
Bu alıştırmada, özel karakterleri görüntülemek ve çıkışa farklı biçimlendirme türleri eklemek için farklı teknikler öğreneceksiniz.
C# kod düzenleyicisi doğrudan tarayıcıda kullanılabilir: C# Kod Düzenleyicisi. Bu düzenleyici, yerel bilgisayarınıza herhangi bir yazılım yüklemeye gerek kalmadan C# kodu yazmak, çalıştırmak ve test etmek için basit bir ortam sağlar.
Karakter kaçış dizileri
Kaçış karakteri dizisi, çalışma zamanına dizenizin çıkışını etkileyecek özel bir karakter ekleme yönergesidir. C# dilinde, kaçış karakteri dizisi bir ters eğik çizgiyle \ başlar ve ardından kaçtığınız karakterdir. Örneğin, \n dizisi yeni bir satır ekler ve \t dizisi de bir sekme ekler.
Aşağıdaki kod, yeni satırlar ve sekmeler eklemek için kaçış karakteri dizilerini kullanır:
Console.WriteLine("Hello\nWorld!");
Console.WriteLine("Hello\tWorld!");
Kodu çalıştırırsanız aşağıdaki çıkışı görürsünüz:
Hello
World!
Hello World!
Değişmez değer dizesine çift tırnak işareti eklemeniz gerekirse ne olur? Karakter kaçış dizisini kullanmazsanız, dizeyi erken sonlandırmak istediğinizi düşüneceği için derleyicinin kafasını karıştırırsınız. Derleyici, ikinci çift tırnak işaretinden sonraki karakterlerin amacını anlamayacaktır.
Console.WriteLine("Hello "World"!");
C# Kod Düzenleyicisi World'nin altına kırmızı dalgalı bir çizgi çizecektir. Ancak yine de kodu çalıştırmayı denerseniz aşağıdaki çıkışı görürsünüz:
Error summary:
CS1003: Syntax error, ',' expected
CS0103: The name 'World' does not exist in the current context
CS1003: Syntax error, ',' expected
Bu durumu işlemek için kaçış dizisini \" kullanın:
Console.WriteLine("Hello \"World\"!");
Yukarıdaki kodu çalıştırırsanız aşağıdaki çıkışı görürsünüz:
Hello "World"!
Ters eğik çizgiyi, dosya yolunu görüntülemek gibi başka amaçlarla kullanmanız gerekirse ne olur?
Console.WriteLine("c:\source\repos");
Ne yazık ki, C# kaçış dizileri için ters eğik çizgiyi ayırır, bu nedenle kodu çalıştırırsanız derleyici aşağıdaki hatayı görüntüler:
(1,22): error CS1009: Unrecognized escape sequence
Sorun, \s dizisidir.
\r bir satır başı için geçerli bir kaçış dizisi olduğundan hata üretmez. Ancak, bu bağlamda bir satır başı kullanmak istemezsiniz.
Bu sorunu çözmek için tek bir ters eğik çizgi görüntülemek için öğesini \\ kullanırsınız.
Console.WriteLine("c:\\source\\repos");
Ters eğik çizgi karakterinden kaçış, istediğiniz çıkışı üretir:
c:\source\repos
Karakter kaçış dizilerini kullanarak çıkışı biçimlendirme
C# Kod Düzenleyicisi'nde kodun tümünü seçin ve silmek için Delete veya Backspace tuşuna basın.
Komut satırı aracının sahtesini oluşturmak için düzenleyiciye aşağıdaki kodu girin:
Console.WriteLine("Generating invoices for customer \"Contoso Corp\" ... \n"); Console.WriteLine("Invoice: 1021\t\tComplete!"); Console.WriteLine("Invoice: 1022\t\tComplete!"); Console.Write("\nOutput Directory:\t");Şimdi kodu çalıştırın. Çıkış konsolunda aşağıdaki sonucu görürsünüz:
Generating invoices for customer "Contoso Corp" ... Invoice: 1021 Complete! Invoice: 1022 Complete! Output Directory:
Düz metin dizesi değişmez değeri
Düz metin dizesi değişmez değeri, ters eğik çizgiye kaçış karakteri eklenmesi gerekmeden tüm boşlukları ve karakterleri korur. Düz metin dizesi oluşturmak için, değişmez değer dizesinden önce @ yönergesini kullanın.
Console.WriteLine(@" c:\source\repos
(this is where your code goes)");
Dizenin iki satıra yayıldığına ve bu C# yönergesi tarafından oluşturulan boşluğun aşağıdaki çıkışta korunduğuna dikkat edin.
c:\source\repos
(this is where your code goes)
Düz metin dize değişmez değerlerini kullanarak çıkışı biçimlendirme
Daha önce oluşturduğunuz kodun altına aşağıdaki kod satırını ekleyin:
Console.Write(@"c:\invoices");Şimdi kodu çalıştırın. "Çıkış Dizini"ni içeren aşağıdaki sonucu görürsünüz:
Generating invoices for customer "Contoso Corp" ... Invoice: 1021 Complete! Invoice: 1022 Complete! Output Directory: c:\invoices
Unicode kaçış karakterleri
\u kaçış dizisini ve sonra bazı karakterleri Unicode (UTF-16) olarak gösteren dört karakterli bir kodu kullanarak değişmez değer dizelerine kodlanmış karakterler de ekleyebilirsiniz.
// Kon'nichiwa World
Console.WriteLine("\u3053\u3093\u306B\u3061\u306F World!");
Not
Burada birkaç uyarı verilmiştir. İlk olarak, Windows Komut İstemi gibi bazı konsollar tüm Unicode karakterlerini görüntülemez. Bunun yerine bu karakterleri soru işareti karakterleriyle değiştirir. Ayrıca burada kullanılan örnekler UTF-16 biçimindedir. Bazı karakterler için UTF-32 gereklidir ve bu nedenle farklı bir kaçış dizisi gerekir. Bu karmaşık bir konudur ve bu modül size yalnızca mümkün olanları göstermeyi amaçlamaktadır. Gereksinimlerinize bağlı olarak, uygulamalarınızda Unicode karakterlerini öğrenmeye ve bunlarla çalışmaya biraz zaman ayırmanız gerekebilir.
Unicode kaçış karakterlerini kullanarak çıkışı biçimlendirme
Komut satırı aracının sahtesini tamamlamak için Japonca dilinde şu ifadeyi çeviren bir tümcecik ekleyeceksiniz: "Japonca fatura oluşturmak için". Ardından, kullanıcının girebileceği bir komutu temsil eden düz bir değişmez dize görüntülersiniz. Biçimlendirme için bazı kaçış dizileri de ekleyeceksiniz.
Aşağıdaki kodu uygulamanıza ekleyin:
// To generate Japanese invoices: // Nihon no seikyū-sho o seisei suru ni wa: Console.Write("\n\n\u65e5\u672c\u306e\u8acb\u6c42\u66f8\u3092\u751f\u6210\u3059\u308b\u306b\u306f\uff1a\n\t"); // User command to run an application Console.WriteLine(@"c:\invoices\app.exe -j");Kodunuzun doğru olduğundan emin olmak için aşağıdakilerle karşılaştırın:
Console.WriteLine("Generating invoices for customer \"Contoso Corp\" ... \n"); Console.WriteLine("Invoice: 1021\t\tComplete!"); Console.WriteLine("Invoice: 1022\t\tComplete!"); Console.Write("\nOutput Directory:\t"); Console.Write(@"c:\invoices"); // To generate Japanese invoices: // Nihon no seikyū-sho o seisei suru ni wa: Console.Write("\n\n\u65e5\u672c\u306e\u8acb\u6c42\u66f8\u3092\u751f\u6210\u3059\u308b\u306b\u306f\uff1a\n\t"); // User command to run an application Console.WriteLine(@"c:\invoices\app.exe -j");Şimdi kodu çalıştırın. Çıkış konsolunda aşağıdaki sonucu görürsünüz:
Generating invoices for customer "Contoso Corp" ... Invoice: 1021 Complete! Invoice: 1022 Complete! Output Directory: c:\invoices 日本の請求書を生成するには: c:\invoices\app.exe -j
Özet
Şu ana kadar değişmez dizeleri biçimlendirme hakkında şunları öğrendiniz:
- Değişmez değer dizesine sekme
\t, yeni satır\nveya çift tırnak işareti\"gibi bir özel karakter eklemeniz gerektiğinde karakter kaçış dizilerini kullanın. - Diğer tüm senaryolarda ters eğik çizgi kullanmanız gerektiğinde, ters eğik çizgi
\\için bir kaçış karakteri kullanın. - Dizedeki
@tüm boşluk biçimlendirmesini ve ters eğik çizgi karakterlerini tutan bir düz metin dizesi değişmez değeri oluşturmak için yönergesini kullanın. - Bir dizedeki Unicode karakterlerini (UTF-16) göstermek için
\uve dört karakterli kodu kullanın. - Unicode karakterleri uygulamaya bağlı olarak doğru yazdırılamayabilir.