Alıştırma - Dize biçimlendirme temellerini araştırma
- 20 dakika
Bu ünitede, özellikle birden çok değişken kullanan durumlarda verimli görüntü için dizeleri biçimlendirme yöntemlerini öğreneceksiniz.
Kodlama ortamınızı hazırlama
Bu modül, tanıtım kodu oluşturma ve çalıştırma sürecinde size yol gösteren uygulamalı etkinlikleri içerir. Geliştirme ortamınız olarak Visual Studio Code kullanarak bu etkinlikleri tamamlamanız tavsiye edilir. Bu etkinlikler için Visual Studio Code'un kullanılması, dünya çapındaki profesyoneller tarafından kullanılan bir geliştirici ortamında daha rahat kod yazmanıza ve çalıştırmanıza yardımcı olur.
Not
Bu C# serisindeki diğer Microsoft Learn modüllerini tamamladıysanız, kod örnekleri için zaten bir proje klasörü oluşturmuş olabilirsiniz. Bu durumda, adımların aşağıdaki bölümünü atlayabilir ve önceki alıştırmada kullanılan dosyadaki Project.cs kodu silebilirsiniz.
Visual Studio Code'u açın. Visual Studio Code'u açmak için Windows Başlat menüsü (veya başka bir işletim sistemi için eşdeğer kaynak) kullanabilirsiniz.
Visual Studio Code Dosyası menüsünde Klasör Aç'ı seçin.
Klasör Aç iletişim kutusunda Windows Masaüstü klasörüne gidin. Kod projelerini tuttuğunuz farklı bir klasör konumunuz varsa, bunun yerine bu klasör konumunu kullanabilirsiniz. Bu eğitim için önemli olan kolayca bulunabilecek ve hatırlanması gereken bir konuma sahip olmaktır.
Klasör Aç iletişim kutusunda Klasör Seç'i seçin. Yazarlara güvenip güvenmeyişinizi soran bir güvenlik iletişim kutusu görürseniz Evet'i seçin.
Visual Studio Code Terminal menüsünde Yeni Terminal'i seçin. Terminal panelindeki bir komut isteminin geçerli klasörün klasör yolunu görüntülediğine dikkat edin. Örneğin:
C:\Users\someuser\Desktop>Terminal komut isteminde, belirtilen klasörde yeni bir konsol uygulaması oluşturmak için dotnet new console -o ./CsharpProjects/TestProject yazıp Enter tuşuna basın. Bu .NET CLI komutu, belirtilen klasör konumunda yeni bir C# konsol uygulaması projesi oluşturmak için bir .NET program şablonu kullanır. Komut sizin için CsharpProjects ve TestProject klasörlerini oluşturur ve dosyanın adı
.csprojolarak TestProject kullanır.EXPLORER panelinde CsharpProjects klasörünü genişletin. TestProject klasörünü ve iki dosyayı, Program.cs adlı bir C# program dosyasını ve TestProject.csproj adlı bir C# proje dosyasını görmeniz gerekir.
EXPLORER panelinde, Kod dosyanızı Düzenleyici panelinde görüntülemek için Program.cs'ı seçin.
Mevcut kod satırlarını silin. Bu modül sırasında kod örnekleri oluşturmak, derlemek ve çalıştırmak için bu C# konsol projesini kullanırsınız.
Terminal panelini kapatın.
Bileşik biçimlendirme nedir?
Bileşik biçimlendirme , bir dize içindeki numaralandırılmış yer tutucuları kullanır. Çalışma zamanında, küme ayraçlarının içindeki her şey, konumlarına göre de geçirilen bir değere çözümlenir.
Bu bileşik biçimlendirme örneği, veri türü anahtar sözcüğünde Format() yerleşik bir yöntem string kullanır. Visual Studio Code Düzenleyicisi'nde kodunuzu aşağıdaki gibi güncelleştirin:
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Bu kodu çalıştırırsanız aşağıdaki çıkışı gözlemlersiniz.
Hello World!
Bu kod hakkında dikkat etmeniz gereken birkaç önemli nokta vardır.
- Veri türleri ve bir veri türünün değişkenleri, belirli görevleri kolaylaştırmak için yerleşik "yardımcı yöntemlere" sahiptir.
- Değişmez değer dizesi
"{0} {1}!", parçaları çalışma zamanında değiştirilen bir şablon oluşturur. -
{0}belirteci, dize şablonundan sonraki ilk bağımsız değişkenle, diğer bir deyişlefirstbağımsız değişkeniyle değiştirilir. -
{1}belirteci, dize şablonundaki diğer sözcüklerden veseconddeğişkeninin değerinden sonra ikinci bağımsız değişkenle değiştirilir.
Not
0 sayısıyla başlamanın garip olduğunu düşünebilirsiniz. Aslında bu durum yazılım geliştirme alanında oldukça yaygındır. Rakam ile tanımlanabilecek bir öğe dizisi söz konusu olduğunda numaralandırma genellikle 0 ile başlatılır.
Kodunuzu aşağıdaki gibi güncelleştirin:
string first = "Hello"; string second = "World"; Console.WriteLine("{1} {0}!", first, second); Console.WriteLine("{0} {0} {0}!", first, second);Kod dosyanızı kaydedin ve ardından Visual Studio Code'u kullanarak kodunuzu çalıştırın. Aşağıdaki çıkışı görmeniz gerekir:
World Hello! Hello Hello Hello!
Bu örneklerle ilgili birkaç gözlem:
- İlk
Console.WriteLine()deyim için belirteçlerin herhangi bir sırada düzenlenebildiğini gözlemleyin. Örnek kodun öncesine{1}sahip olması{0}gerekir. - İkinci
Console.WriteLine()deyim için belirteçlerin üç örneğiyle{0}yeniden kullanılabilir olduğunu gözlemleyin. Ayrıca, ikinci değişken bağımsız değişkeni olansecond, kullanılmaz. Ancak kod yine de hatasız çalışır.
Dize ilişkilendirme nedir?
Dize ilişkilendirme , bileşik biçimlendirmeyi basitleştiren bir tekniktir.
Numaralandırılmış belirteci kullanmak ve değişmez değeri veya değişken adını String.Format() veya Console.WriteLine() için bağımsız değişken listesine dahil etmek yerine küme ayracı içinde değişken adını kullanabilirsiniz.
Bir dizeyi ilişkilendirmek için önüne
$yönergesini eklemeniz gerekir. Şimdi, bileşik biçimlendirme yerine dize ilişkilendirmesini kullanarak önceki örneklerden aynı örnekleri oluşturun. Kodunuzu aşağıdaki gibi güncelleştirin:string first = "Hello"; string second = "World"; Console.WriteLine($"{first} {second}!"); Console.WriteLine($"{second} {first}!"); Console.WriteLine($"{first} {first} {first}!");Kod dosyanızı kaydedin ve ardından Visual Studio Code'u kullanarak kodunuzu çalıştırın. Aşağıdaki çıkışı görmeniz gerekir:
Hello World! World Hello! Hello Hello Hello!
Not
Kitaplardaki ve çevrimiçi kod örneklerine bakarsanız, hem bileşik biçimlendirme hem de dize ilişkilendirmenin kullanıldığını görmeniz olasıdır, ancak genellikle dize ilişkilendirmeyi seçmeniz gerekir.
Para birimini biçimlendirme
Bileşik biçimlendirme ve dize ilişkilendirme ile belirli bir dile ve kültüre ait olan değerleri görüntülenmek üzere biçimlendirebilirsiniz. Aşağıdaki örnekte :C ve price değişkenlerini para birimi olarak sunmak için discount para birimi biçimi tanımlayıcısı kullanılmıştır. Kodunuzu aşağıdaki gibi güncelleştirin:
decimal price = 123.45m;
int discount = 50;
Console.WriteLine($"Price: {price:C} (Save {discount:C})");
Bu kodu Windows görüntüleme dili "İngilizce (Birleşik Devletler)" olarak ayarlanmış bir bilgisayarda yürütürseniz aşağıdaki çıkışı gözlemlersiniz.
Price: $123.45 (Save $50.00)
:C veya int kullanmanızdan bağımsız olarak decimal öğesini küme ayraçlarının içindeki belirteçlere eklemenin sayıyı nasıl para birimi olarak biçimlendirdiğine dikkat edin.
Not
Ülkeniz/bölgeniz ve diliniz bilinmiyorsa ne olur?
TrydotNet gibi bir önceki kodu "in-browser" .NET Düzenleyicisi'nde çalıştırırsanız aşağıdaki çıkışı görürsünüz: Price: ¤123.45 (Save ¤50.00). Sembol ¤ , ülkenizin/bölgenizin parasının simgesi yerine kullanılır. Bu, para birimi türü ne olursa olsun "para birimini" belirtmek için kullanılan genel bir simgedir. Bulunduğunuz konum yoksayıldığından .NET Düzenleyicisinde bu simge görüntülenir.
Kullanıcının ülke/bölge ve dili dize biçimlendirmesini nasıl etkiler?
Önceki kodu Fransa'da Windows Görüntüleme Dili Fransızca olarak ayarlanmış bir bilgisayarda yürütürseniz ne olur? Bu durumda aşağıdaki çıkışı görürsünüz.
Price: 123,45 € (Save 50,00 €)
Önceki "€" çıkışının nedeni, dize para birimi biçimlendirme özelliğinin kültür için yerel bilgisayar ayarına bağımlı olmasıdır. Bu bağlamda "kültür" terimi, son kullanıcının ülke/bölge ve dilini ifade eder. Kültür kodu, bilgisayarların son kullanıcının konumunu ve dilini tanımlamak için kullandığı beş karakterlik bir dizedir. Kültür kodu, tarihler ve para birimi gibi belirli bilgilerin düzgün bir şekilde sunulabilmesini sağlar.
Örneğin:
- ABD'de bulunan ve İngilizce konuşan birinin kültür kodu
en-USolur. - Fransa'da bulunan ve Fransızca konuşan birinin kültür kodu
fr-FRolur. - Kanada'da bulunan ve Fransızca konuşan birinin kültür kodu
fr-CAolur.
Kültür yazma sistemini, kullanılan takvimi, dizelerin sıralama düzenini ve tarih ile rakamların biçimlendirme şeklini (para biriminin biçimlendirilmesi gibi) etkiler.
Ne yazık ki, ülke/bölge veya son kullanıcının dilinden bağımsız olarak kodunuzun tüm bilgisayarlarda düzgün çalıştığından emin olmak zordur. Bu işlem yerelleştirme (veya genelleştirme) olarak bilinir. Yerelleştirme, bu modülde ele alınmayan birçok faktöre bağlıdır, ancak basitçe, dize biçimlendirme söz dizimi kullanıcının kültürüne bağlı olarak farklı bir biçim kullanabilir.
Sayıları biçimlendirme
Sayısal verilerle çalışırken, binlerce, milyonlarca, milyar vb.'yi ayırmak için virgül ekleyerek okunabilirlik sayısını biçimlendirmek isteyebilirsiniz.
Sayısal biçim tanımlayıcısı N sayıları daha okunabilir hale getirir. Kodunuzu aşağıdaki gibi güncelleştirin:
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N} units");
Bunu kültürden en-US görüntülüyorsanız aşağıdaki çıkışı gözlemlersiniz.
Measurement: 123,456.79 units
N sayısal biçim tanımlayıcısı varsayılan olarak ondalık ayırıcıdan sonra yalnızca iki basamak gösterir.
Daha fazla basamak göstermek istiyorsanız bunun için tanımlayıcıdan sonra bir rakam ekleyebilirsiniz. Aşağıdaki kod, N4 tanımlayıcısını kullanarak ondalık ayırıcıdan sonra dört basamak görüntüler. Kodunuzu aşağıdaki gibi güncelleştirin:
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N4} units");
Bunu kültürden en-US görüntülüyorsanız aşağıdaki çıkışı gözlemlersiniz.
Measurement: 123,456.7891 units
Yüzde değerlerini biçimlendirme
Yüzdeleri P biçimlendirmek ve 2 ondalık basam aya yuvarlar için biçim tanımlayıcısını kullanın. Ondalık ayırıcıdan sonra görüntülenecek basamak sayısını denetlemek için arkasına bir sayı ekleyin. Kodunuzu aşağıdaki gibi güncelleştirin:
decimal tax = .36785m;
Console.WriteLine($"Tax rate: {tax:P2}");
Bunu kültürden en-US görüntülüyorsanız aşağıdaki çıkışı gözlemlersiniz.
Tax rate: 36.79%
Biçimlendirme yaklaşımlarını birleştirme
Dize değişkenleri, biçimlendirme teknikleri kullanılarak oluşturulan dizeleri depolayabilir. Aşağıdaki örnekte, ondalık ve ondalık matematik sonuçları bileşik biçimlendirme kullanılarak biçimlendirilir ve dizede yourDiscount depolanır.
Kodunuzu aşağıdaki gibi güncelleştirin.
decimal price = 67.55m;
decimal salePrice = 59.99m;
string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);
Console.WriteLine(yourDiscount);
Bunu kültürden en-US görüntülüyorsanız aşağıdaki çıkışı gözlemlersiniz.
You saved $7.56 off the regular $67.55 price.
Birden çok biçimlendirilmiş dizeyi birleştirebilirsiniz. önceki kodda, dize birleştirme yerine dize ilişkilendirmesini kullanarak hesaplanan yüzdeyi birleştirerek yourDiscount += $"A discount of {(price - salePrice)/price:P2}!"; önceki kod üzerinde Console.WriteLine()oluşturun.
Not
Bu dize ilişkilendirme yaklaşımıyla kullanmanız String.Format() gerekmez.
Kodunuzu aşağıdaki gibi güncelleştirin.
decimal price = 67.55m;
decimal salePrice = 59.99m;
string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);
yourDiscount += $"A discount of {((price - salePrice)/price):P2}!"; //inserted
Console.WriteLine(yourDiscount);
Bu üniteyi en-US kültürden görüntülüyorsanız aşağıdaki çıkışı gözlemlersiniz.
You saved $7.56 off the regular $67.55 price. A discount of 11.19%!
Özet
Bu ünitede anlatılan dize biçimlendirme özellikleriyle ilgili en önemli noktalar aşağıda belirtilmiştir:
- Dizeleri biçimlendirmek için bileşik biçimlendirme veya dize ilişkilendirme seçeneklerini kullanabilirsiniz.
-
Bileşik biçimlendirmeyle, biçiminde
{0}bir veya daha fazla değiştirme belirteci içeren bir dize şablonu kullanırsınız. Ayrıca değiştirme belirteçlerinin sırasına göre dizilmiş bir bağımsız değişken listesi de sağlarsınız. Bileşik biçimlendirme,string.Format()veyaConsole.WriteLine()ile birlikte kullanılabilir. -
Dize ilişkilendirmesi ile, küme ayraçlarıyla çevrelenmiş olarak değiştirilmesini istediğiniz değişken adlarını içeren bir dize şablonu kullanırsınız. Dizinin ilişkilendirilmesini istediğinizi belirtmek için dize şablonundan önce
$yönergesini kullanın. - Para birimlerini biçimlendirmek için
:Ctanımlayıcısını kullanın. - Sayıları biçimlendirmek için
:Ntanımlayıcısını kullanın. Duyarlık düzeyini (ondalık ayırıcıdan sonra gelen basamak sayısını) denetlemek için:Nifadesinin sonuna bir sayı ekleyin, ör.{myNumber:N3}. - Biçim belirticisini
:Pkullanarak yüzdeleri biçimlendirin. - Para birimi ve sayıları biçimlendirmek, kullanıcının ülke/bölge ve dilini (bilgisayarındaki ayarlara göre) içeren beş karakterlik bir kod olan son kullanıcının kültürüne bağlıdır.