Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, biçimlendirilmiş sipariş özetini yazdıran küçük bir dosya tabanlı uygulama oluşturacaksınız. Bu arada, metinlere değer eklemek, sayıları ve para birimini biçimlendirmek, sütunları dizip kültüre özgü çıkışlar üretmek için dize ilişkilendirmesi uygularsınız.
Bu öğreticide, temel C# kavramlarını bildiğiniz varsayılır. Enterpolasyon söz diziminin özellik bazında başvurusu için bkz: String interpolation.
Prerequisites
- .NET 10 SDK veya sonraki bir sürüm. Dosya tabanlı uygulamalar için .NET 10 veya üzeri gerekir.
- Visual Studio Code gibi bir kod düzenleyicisi.
Uygulamayı oluşturma
Dosya tabanlı uygulama, proje dosyası olmadan çalıştırdığınız tek .cs bir dosyadır. Uygulama için bir klasör oluşturun ve içine geçin:
mkdir StringInterpolation
cd StringInterpolation
Bu klasörde report.cs adlı boş bir dosya oluşturun ve dosyayı düzenleyicinizde açın. İzleyen bölümlerde ona kod eklersiniz ve uygulamayı dotnet run report.cs ile çalıştırırsınız.
Metne değer ekleme
Bir dize sabitinin başına $ ekleyerek onu enterpolasyonlu dize haline getirin. Dizenin içine tüm C# ifadelerini küme ayraçlarına ({ ve }) yerleştirin. C# ifadeyi değerlendirir, sonucu bir dizeye dönüştürür ve ekler.
Aşağıdaki kodu report.cs dosyasına ekleyin, ardından uygulamayı dotnet run report.cs ile çalıştırın:
string name = "Maria";
int itemCount = 3;
// Prefix a string literal with $ to interpolate expressions inside braces.
Console.WriteLine($"Hello, {name}! You have {itemCount} items in your cart.");
// => Hello, Maria! You have 3 items in your cart.
Sonuç, sabit metni name ve itemCount değerleriyle birleştirir.
Sayıları ve para birimini biçimlendirme
Sipariş özetinde para ve ücretler gösterilir; bu nedenle ham sayılar 23.50.08 bitmemiş ve okunması zor gibi görünür. Her değeri müşterinin beklediği şekilde sunun: para birimi simgesine sahip bir fiyat ve yüzde olarak vergi oranı. Bunu enterpolasyonun bir parçası olarak biçimlendirin.
Bir değeri biçimlendirmek için ifadenin ardından iki nokta üst üste (:) ve bir biçim dizesi getirin. Standart biçim dizeleri C ve P0 para birimi ve tam sayı yüzdeleri üretir. Dosyanın sonuna aşağıdaki kodu ekleyin:
decimal subtotal = 23.5m;
decimal taxRate = 0.08m;
// Follow an expression with :format to apply a standard or custom format string.
Console.WriteLine($"Subtotal: {subtotal:C}");
Console.WriteLine($"Tax rate: {taxRate:P0}");
Console.WriteLine($"Total: {subtotal * (1 + taxRate):C}");
// => Subtotal: $23.50
// => Tax rate: 8%
// => Total: $25.38
Biçim dizesi geçerli kültürün kurallarını uygular, dolayısıyla para birimi simgesi ve ayırıcıları makinenin ayarlarıyla eşleşilir.
Değerleri sütunlara hizalama
Birkaç veri satırı yazdırdığınızda, farklı uzunluklardaki değerler sütunların düzensiz görünmesine ve gözden geçirilmesinin zorlaşmasına neden olur. Her adı ve sayıyı tutarlı bir başlık altında hizaya getirmek için her alana sabit bir genişlik verin; böylece her değer ne kadar uzun olursa olsun sütunların düz kalmasını sağlayın.
En az alan genişliğini ayarlamak için ifadenin ardından bir virgül (,) ve genişlik değerini ekleyin. Pozitif genişlik değeri sağa hizalar; negatif genişlik sola hizalar. Genişliği ve biçim dizesini {expression,width:format} şeklinde birleştirin. Tablo özetini yazdırmak için aşağıdaki kodu ekleyin:
(string Name, int Quantity, decimal Price)[] orders =
[
("Espresso", 2, 3.50m),
("Cappuccino", 1, 4.25m),
("Tea", 4, 2.00m),
];
// Follow an expression with ,width to set a minimum field width.
// A positive width right-aligns; a negative width left-aligns.
foreach (var order in orders)
{
Console.WriteLine($"{order.Name,-12}{order.Quantity,3}{order.Price * order.Quantity,10:C}");
}
// => Espresso 2 $7.00
// => Cappuccino 1 $4.25
// => Tea 4 $8.00
Sola hizalanmış ad sütunu ve sağa hizalanmış sayısal sütunlar okunabilir bir tabloya hizalanır.
Kültüre özel çıktı oluşturma
Enterpolasyonlu dize varsayılan olarak geçerli kültürü kullanır. Günlükler için sabit bir biçim veya makbuz için bir yerel ayar gibi belirli bir kültüre ihtiyacınız olduğunda, String.Create(IFormatProvider, DefaultInterpolatedStringHandler) öğesine bir kültür geçirin. Aşağıdaki kodu ekleyin:
decimal total = 1234.56m;
// An interpolated string uses the current culture by default.
// Use string.Create with a culture to control the formatting explicitly.
string germanReceipt = string.Create(
new CultureInfo("de-DE"), $"Gesamt: {total:C}");
string invariantLog = string.Create(
CultureInfo.InvariantCulture, $"total={total:F2}");
Console.WriteLine(germanReceipt);
Console.WriteLine(invariantLog);
// => Gesamt: 1.234,56 €
// => total=1234.56
Alman makbuzunda ondalık ayırıcı olarak virgül ve euro simgesi kullanılır. Değişmez günlüğü, makinenin kültüründen bağımsız olarak nokta kullanır ve hiçbir simge kullanmaz.
Sonraki Adımlar
Değerleri eklemek, biçimlendirmek, hizalamak ve yerelleştirmek için dize ilişkilendirmesini kullandınız. Ham dize değişmez değerleri, kaçış ayraçları ve sabit ilişkilendirilmiş dizeler de dahil olmak üzere tüm ilişkilendirme özellikleri için kavram makalesine bakın: