Biçimlendirilmiş dizeler oluşturmak için dize ilişkilendirmeyi kullanma
Bu öğreticide, tek bir dizeye değer eklemek için dize ilişkilendirmesini kullanmayı öğreneceksiniz. Sonuç dizesinin metin biçimlendirmesini denetlemeyi de öğrenirsiniz. C# kodu yazmak ve çalıştırmak için tarayıcınızı kullanırsınız ve sonuçları hemen görebilirsiniz.
İlişkilendirilmiş dize oluşturma
Etkileşimli pencerede aşağıdaki kodu çalıştırın. Odak moduna gir düğmesini seçin. Ardından, etkileşimli pencereye aşağıdaki kod bloğunu yazın (adınızla değiştirin<name>
) ve Çalıştır'ı seçin:
var name = "<name>";
Console.WriteLine($"Hello, {name}. It's a pleasure to meet you!");
Kodu çalıştırdığınızda Çıkış, selamlamada adınızı içeren bir dize görüntüler. Yöntem çağrısının WriteLine dize bağımsız değişkeni, ilişkilendirilmiş bir dize ifadesidir. Bu, gömülü kod içeren bir dizeden tek bir dize (sonuç dizesi olarak adlandırılır) oluşturmanızı sağlayan bir şablon türüdür. İlişkili dize ifadeleri özellikle bir dizeye değer eklemek veya birkaç dizeyi birleştirmek (birleştirmek) için kullanışlıdır.
Yukarıdaki örnek, ilişkilendirilmiş her dize ifadesinin sahip olması gereken iki öğeyi içerir:
Açma tırnak işareti karakterinden önce
$
karakteriyle başlayan bir dize sabit değeri.$
sembolü ile tırnak işareti karakteri arasında boşluk olamaz. (Bir karakter eklerseniz ne olacağını görmek isterseniz, etkileşimli pencerede karakterin$
arkasına bir boşluk ekleyin ve güncelleştirilmiş kodu çalıştırın. C# derleyicisi "Beklenmeyen '$'" karakterinden şikayet eder.)Bir veya daha fazla ilişkilendirme ifadesi. Bir ilişkilendirme ifadesi, bir açma ve kapatma küme ayracı (
{
ve}
) ile gösterilir. Ayraçlar arasında bir değer (null
dahil) döndüren herhangi bir C# ifadesini ekleyebilirsiniz.
Şimdi diğer veri türleriyle birkaç dize ilişkilendirme örneği daha deneyelim.
Farklı veri türleri ekleme
Önceki adımda, bir dizeyi başka bir dizenin içine eklemek için dize ilişkilendirmesini kullandınız. Ancak, ilişkilendirilmiş dize ifadesinin parçası olan her ilişkilendirme ifadesi herhangi bir veri türünde olabilir. Şimdi ilişkilendirilmiş bir dizeye çeşitli veri türü ifadelerinin değerlerini ekleyelim.
Aşağıdaki örnekte, önce , Price
ve perPackage
üyeleri olan Name
bir tanımlama grubu tanımlayacağız. Etkileşimli pencerede aşağıdaki kodu çalıştırın:
var item = (Name: "eggplant", Price: 1.99m, perPackage: 3);
var date = DateTime.Now;
Console.WriteLine($"On {date}, the price of {item.Name} was {item.Price} per {item.perPackage} items.");
İlişkili dizedeki ilişkilendirme ifadesinin item.Price
sonuç dizesindeki "1,99" metnine çözümlendiğini unutmayın. Bunun nedeni, ifade sonucunun türü bir dize olmadığında sonucun aşağıdaki şekilde bir dizeye çözümlenmesidir:
İlişkilendirme ifadesi olarak değerlendirilirse
null
, boş bir dize (""veya String.Empty) kullanılır.İlişkilendirme ifadesi olarak değerlendirilmezse
null
, genellikleToString
sonuç ifadesinin yöntemi çağrılır.
Bu örnekteki çıktıda tarih çok kesindir (patlıcan fiyatı her saniye değişmez) ve fiyat değeri bir para birimi belirtmez. Sonraki adımda, ifade sonuçlarının dize gösterimlerinin biçimini denetleyerek bu sorunları nasıl çözeceğinizi öğreneceksiniz.
İlişkilendirme ifadelerinin biçimlendirmesini denetleme
Önceki adımda, sonuç dizesine kötü biçimlendirilmiş iki dize eklendi. Biri tarih ve saat değeriydi, bunlardan yalnızca tarih değeri uygundu. İkincisi, para birimini belirtmemiş bir fiyattı. Her iki sorun da kolayca giderilebilir. Dize ilişkilendirmesi, belirli türlerin biçimlendirmesini denetleye biçim dizeleri belirtmenize olanak tanır. Önceki örnekteki çağrısında Console.WriteLine
, aşağıdaki satırda gösterildiği gibi tarih ve fiyat ifadelerinin biçim dizelerini içerecek şekilde değiştirin:
Console.WriteLine($"On {date:d}, the price of {item.Name} was {item.Price:C2} per {item.perPackage} items");
İki nokta üst üste (":") ve biçim dizesiyle ilişkilendirme ifadesini izleyerek bir biçim dizesi belirtirsiniz. “d”, kısa tarih biçimini ifade eden standart tarih ve saat biçimi dizesidir. “C2”, ondalık ayırıcıdan sonra gelen iki basamakla para birimi değeri olarak bir sayıyı ifade eden standart sayısal biçim dizesidir.
.NET kitaplıklarındaki bir dizi tür, önceden tanımlanmış biçim dizeleri kümesini destekler. Bunlara tüm sayısal türlerin yanı sıra tarih ve saat türleri de dahildir. Biçim dizelerini destekleyen türlerin tam listesi için .NET’teki Biçimlendirme Türleri başlıklı makalede bulunan Biçim Dizeleri ve .NET Sınıfı Kitaplık Türleri bölümüne bakın.
Tarih ve saatin biçimlendirmesini ve sayısal değeri nasıl etkilediklerini görmek için örnekteki biçim dizelerini değiştirmeyi deneyin. {date:d}
içindeki “d”yi “t” olarak (kısa saat biçimini görüntülemek için), “y” olarak (yılı ve ayı görüntülemek için) ve “yyyy” olarak (yılı dört basamaklı sayı olarak görüntülemek için) değiştirin. {price:C2}
içindeki “C2”yi “e” olarak (üstel gösterim için) ve “F3” olarak (ondalık ayırıcıdan sonra üç basamak içeren sayısal bir değer için) değiştirin.
Biçimlendirmeyi denetlemeye ek olarak, sonuç dizesine dahil edilen biçimlendirilmiş dizelerin alan genişliğini ve hizalamasını da denetleyebilirsiniz. Bir sonraki adımda bunu nasıl yapacağınızı öğreneceksiniz.
İlişkilendirme ifadelerinin alan genişliğini ve hizalamasını denetleme
Normalde, ilişkilendirilmiş bir dize ifadesinin sonucu dize olarak biçimlendirildiğinde, bu dize önünde veya sonunda boşluk olmadan bir sonuç dizesine eklenir. Özellikle bir veri kümesiyle çalışırken, alan genişliğini ve metin hizalamasını denetleyebilmek daha okunabilir bir çıkış üretmeye yardımcı olur. Bunu görmek için aşağıdaki kodu çalıştırın:
var inventory = new Dictionary<string, int>()
{
["hammer, ball pein"] = 18,
["hammer, cross pein"] = 5,
["screwdriver, Phillips #2"] = 14
};
Console.WriteLine($"Inventory on {DateTime.Now:d}");
Console.WriteLine(" ");
Console.WriteLine($"|{"Item",-25}|{"Quantity",10}|");
foreach (var item in inventory)
Console.WriteLine($"|{item.Key,-25}|{item.Value,10}|");
Öğe adları sola hizalanmış, bunların miktarları ise sağa hizalanmıştır. Hizalamayı, ilişkilendirme ifadesinin arkasına virgül (",") ekleyerek ve en düşük alan genişliğini belirleyerek belirtirsiniz. Belirtilen değer pozitif bir sayıysa, alan sağa hizalanır. Negatif bir sayıysa, alan sola hizalanır.
ve {item.Key,-25}
kodundan negatif işaretleri kaldırmayı {"Item",-25}
deneyin ve örneği yeniden çalıştırın. Bu kez, öğe adları sağa hizalanır.
Tek bir ilişkilendirme ifadesi için hizalama tanımlayıcısını ve biçim dizesini birleştirebilirsiniz. Bunu yapmak için önce hizalamayı, ardından iki nokta üst üste ve biçim dizesini belirtin. Tanımlı alan genişliklerine sahip üç biçimlendirilmiş dize görüntüleyen aşağıdaki kodu deneyin:
Console.WriteLine($"[{DateTime.Now,-20:d}] Hour [{DateTime.Now,-10:HH}] [{1063.342,15:N2}] feet");
Tebrikler!
Dize ilişkilendirme etkileşimli öğreticisini tamamladınız. .NET Core SDK'sını indirmek, makinenizde proje oluşturmak ve kodlamaya devam etmek için .NET sitesini ziyaret edebilirsiniz.
Daha fazla bilgi için bkz . Dize ilişkilendirme.
Bu bölümle ilgili bir sorununuz mu var? Öyleyse bu bölümü iyileştirebilmemiz için lütfen geri bildirimde bulunun.