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.
.NET bileşik biçimlendirme özelliği, nesnelerin listesini ve bileşik biçim dizesini giriş olarak alır. Bileşik biçim dizesi, biçim öğeleri olarak adlandırılan dizinlenmiş yer tutucularla karıştırılan sabit metinlerden oluşur. Bu biçim öğeleri listedeki nesnelere karşılık gelir. Biçimlendirme işlemi sonuç olarak, orijinal sabit metin ve listedeki nesnelerin dize temsillerinin karışımından oluşan bir dize oluşturur.
Önemli
Bileşik biçim dizeleri kullanmak yerine, kullandığınız dil ve sürümü bunları destekliyorsa , ilişkilendirilmiş dizeleri kullanabilirsiniz. Bir interpolasyon dizisi interpolasyonlu ifadeler içerir. Her bir ara ifade, ifadenin değeriyle hesaplanır ve dize atandığında sonuç dizesine eklenir. Daha fazla bilgi için bkz . Dize ilişkilendirmesi (C# Başvurusu) ve İlişkili dizeler (Visual Basic Başvurusu).
Aşağıdaki yöntemler bileşik biçimlendirme özelliğini destekler:
- String.Format, biçimlendirilmiş bir sonuç dizesi döndürür.
- StringBuilder.AppendFormat, biçimlendirilmiş sonuç dizesini bir StringBuilder nesneye ekler.
- Konsolda biçimlendirilmiş bir sonuç dizesi görüntüleyen Console.WriteLine yönteminin bazı aşırı yüklemeleri.
- Biçimlendirilmiş sonuç dizesini TextWriter.WriteLine bir akışa veya dosyaya yazan yöntemin bazı aşırı yüklemeleri. TextWriter'dan türetilen sınıflar, StreamWriter ve HtmlTextWriter gibi, bu işlevselliği de paylaşır.
- Debug.WriteLine(String, Object[]), dinleyicileri izlemek için biçimlendirilmiş bir ileti çıkışı oluşturur.
- Trace.TraceError(String, Object[])dinleyicileri izlemek için biçimlendirilmiş iletilerin çıkışını veren , Trace.TraceInformation(String, Object[])ve Trace.TraceWarning(String, Object[]) yöntemleri.
- TraceSource.TraceInformation(String, Object[]) yöntemini, dinleyicileri izlemek için bilgilendirici bir yöntem yazan bir yöntem.
Bileşik biçim dizesi
Bileşik biçim dizesi ve nesne listesi, bileşik biçimlendirme özelliğini destekleyen yöntemlerin bağımsız değişkenleri olarak kullanılır. Bileşik biçim dizesi, sabit metin parçaları ve bir veya daha fazla biçim öğesinin karışımından oluşur. Sabit metin, seçtiğiniz herhangi bir dizedir ve her biçim öğesi listedeki bir nesneye veya kutulanmış yapıya karşılık gelir. Her nesnenin dize gösterimi, karşılık gelen biçim öğesinin yerini alır.
Aşağıdaki Format kod parçasını göz önünde bulundurun:
string.Format("Name = {0}, hours = {1:hh}", "Fred", DateTime.Now);
String.Format("Name = {0}, hours = {1:hh}", "Fred", DateTime.Now)
Sabit metin Name =
ve , hours =
şeklindedir. Biçim öğeleri şunlardır: {0}
, 0 dizini nesnesine karşılık gelir, ve name
, 1 dizini nesnesine karşılık gelir.
Öğe söz dizimlerini biçimlendir
Her biçim öğesi aşağıdaki biçimi alır ve aşağıdaki bileşenlerden oluşur:
{index[,width][:formatString]}
Eşleşen ayraçlar ({
ve }
) gereklidir.
Dizin bileşeni
Parametre tanımlayıcısı olarak da adlandırılan zorunlu index
bileşen, nesne listesinde karşılık gelen bir öğeyi tanımlayan 0'dan başlayan bir sayıdır. Diğer bir ifadeyle, parametre belirticisi listedeki ilk nesneyi biçimlendiren biçim öğesidir 0
. Parametre belirticisi 1
listedeki ikinci nesneyi biçimlendiren biçim öğesi vb. Aşağıdaki örnek, 10'dan küçük asal sayıları göstermek için sıfırdan üçe kadar numaralandırılmış dört parametre tanımlayıcısı içerir:
string primes = string.Format("Four prime numbers: {0}, {1}, {2}, {3}",
2, 3, 5, 7);
Console.WriteLine(primes);
// The example displays the following output:
// Four prime numbers: 2, 3, 5, 7
Dim primes As String = String.Format("Four prime numbers: {0}, {1}, {2}, {3}",
2, 3, 5, 7)
Console.WriteLine(primes)
'The example displays the following output
' Four prime numbers 2, 3, 5, 7
Birden çok biçim öğesi, aynı parametre tanımlayıcısını belirterek nesne listesindeki aynı öğeye başvurabilir. Örneğin, aşağıdaki örnekte gösterildiği gibi, gibi "0x{0:X} {0:E} {0:N}"
bir bileşik biçim dizesi belirterek aynı sayısal değeri onaltılık, bilimsel ve sayı biçiminde biçimlendirebilirsiniz:
string multiple = string.Format("0x{0:X} {0:E} {0:N}",
Int64.MaxValue);
Console.WriteLine(multiple);
// The example displays the following output:
// 0x7FFFFFFFFFFFFFFF 9.223372E+018 9,223,372,036,854,775,807.00
Dim multiple As String = String.Format("0x{0:X} {0:E} {0:N}",
Int64.MaxValue)
Console.WriteLine(multiple)
'The example displays the following output
' 0x7FFFFFFFFFFFFFFF 9.223372E+018 9,223,372,036,854,775,807.00
Her biçim öğesi listedeki herhangi bir nesneye başvurabilir. Örneğin, üç nesne varsa, gibi {1} {0} {2}
bir bileşik biçim dizesi belirterek ikinci, birinci ve üçüncü nesneyi biçimlendirebilirsiniz. Biçim öğesi tarafından başvurulmayan bir nesne yoksayılır. Çalışma zamanında, bir parametre tanımlayıcısı nesne listesinin sınırlarının dışında bir öğeyi belirlerse bir FormatException oluşturulur.
Genişlik bileşeni
İsteğe bağlı width
bileşen, tercih edilen biçimlendirilmiş alan genişliğini gösteren imzalı bir tamsayıdır.
width
değerinin biçimlendirilmiş dizenin uzunluğundan küçük olması durumunda, width
yoksayılır ve biçimlendirilmiş dizenin uzunluğu alan genişliği olarak kullanılır. Alandaki biçimlendirilmiş veriler pozitifse width
sağa, negatifse width
sola hizalanır. Dolgu gerekiyorsa boşluk kullanılır.
width
belirtilmişse virgül gereklidir.
Aşağıdaki örnek, biri çalışanların adlarını, diğeri ise iki hafta boyunca çalıştıkları saatleri içeren iki diziyi tanımlar. Bileşik biçim dizesi, 20 karakterlik bir alandaki adları sola hizalar ve saatlerini 5 karakterlik bir alanda sağa hizalar. "N1" standart biçim dizesi, saatleri bir ondalık basamakla biçimlendirir.
string[] names = { "Adam", "Bridgette", "Carla", "Daniel",
"Ebenezer", "Francine", "George" };
decimal[] hours = { 40, 6.667m, 40.39m, 82,
40.333m, 80, 16.75m };
Console.WriteLine("{0,-20} {1,5}\n", "Name", "Hours");
for (int counter = 0; counter < names.Length; counter++)
Console.WriteLine("{0,-20} {1,5:N1}", names[counter], hours[counter]);
// The example displays the following output:
// Name Hours
//
// Adam 40.0
// Bridgette 6.7
// Carla 40.4
// Daniel 82.0
// Ebenezer 40.3
// Francine 80.0
// George 16.8
Dim names As String() = {"Adam", "Bridgette", "Carla", "Daniel",
"Ebenezer", "Francine", "George"}
Dim hours As Decimal() = {40, 6.667D, 40.39D, 82,
40.333D, 80, 16.75D}
Console.WriteLine("{0,-20} {1,5}\n", "Name", "Hours")
For counter = 0 To names.Length - 1
Console.WriteLine("{0,-20} {1,5:N1}", names(counter), hours(counter))
Next
'The example displays the following output
' Name Hours
'
' Adam 40.0
' Bridgette 6.7
' Carla 40.4
' Daniel 82.0
' Ebenezer 40.3
' Francine 80.0
' George 16.8
Dize bileşenini biçimlendirme
İsteğe bağlı formatString
bileşen, biçimlendirilmekte olan nesne türüne uygun bir biçim dizesidir. Şunları belirtebilirsiniz:
- Karşılık gelen nesne sayısal bir değerse standart veya özel bir sayısal biçim dizesi.
- Karşılık gelen nesne bir DateTime nesnesiyse, standart veya özel tarih ve saat biçim dizesi.
- Karşılık gelen nesne bir numaralandırma değeriyse, numaralandırma biçimi dizisi.
Belirtilmezse formatString
, sayısal, tarih ve saat veya numaralandırma türü için genel ("G") biçim tanımlayıcısı kullanılır.
formatString
belirtilmişse iki nokta üst üste gereklidir.
Aşağıdaki tabloda, .NET sınıf kitaplığında önceden tanımlanmış biçim dizeleri kümesini destekleyen tür türleri veya kategorileri listelenmektedir ve desteklenen biçim dizelerini listeleyen makalelere bağlantılar sağlanmaktadır. Dize biçimlendirmesi, mevcut tüm türler için yeni biçim dizeleri tanımlamayı ve uygulama tanımlı bir tür tarafından desteklenen bir biçim dizeleri kümesi tanımlamayı mümkün kılan genişletilebilir bir mekanizmadır.
Daha fazla bilgi için IFormattable ve ICustomFormatter arabirim makalelerine bakın.
Tür veya tür kategorisi | Bkz: |
---|---|
Tarih ve saat türleri (DateTime, DateTimeOffset) |
Standart Tarih ve Saat Biçim Dizeleri Özel Tarih ve Saat Biçim Dizeleri |
Sayımsal türler (System.Enum'den türetilen tüm türler) | Numaralandırma Biçim Dizeleri |
Sayısal türler (BigInteger, Byte, Decimal, Double, Int16, Int32, Int64, SByte, Single, UInt16, UInt32, UInt64) |
Standart Sayısal Biçim Dizeleri Özel Sayısal Biçim Dizeleri |
Guid | Guid.ToString(String) |
TimeSpan |
Standart TimeSpan Biçim Dizeleri Özel TimeSpan Biçim Dizeleri |
Kaçış ayraçları
Açma ve kapatma ayraçları, biçim öğesini başlatma ve sonlandırma olarak yorumlanır. Sabit bir açılış veya kapanış süslü parantez görüntülemek için bir kaçış dizisi kullanmanız gerekir. Bir açılış ayracı ({{
) görüntülemek için sabit metinde iki açma ayracı ({
) veya bir kapanış ayracı () görüntülemek için iki kapanış ayracı (}}
}
) belirtin.
.NET ve .NET Framework arasında biçim öğesi içeren kaçış ayraçlarının ayrıştırılma şekli farklıdır.
.NET
Bir biçim öğesinin çevresindeki küme ayraçlarından kaçış yapılabilir. Örneğin, bir açılış ayracı, ondalık sayı olarak biçimlendirilmiş sayısal bir değer ve kapanış ayracı görüntülemeyi amaçlayan biçim öğesini {{{0:D}}}
göz önünde bulundurun. Biçim öğesi aşağıdaki şekilde yorumlanır:
- İlk iki açılış ayracı (
{{
) kaçıştırılmış ve bir açılış ayracı oluşturur. - Sonraki üç karakter (
{0:
) bir biçim öğesinin başlangıcı olarak yorumlanır. - Sonraki karakter (
D
), Ondalık standart sayısal biçim tanımlayıcısı olarak yorumlanır. - Sonraki köşeli parantez (
}
), biçim öğesinin bitişi olarak yorumlanır. - Son iki kapanış ayracı kaçış karakteri olarak kullanılır ve sonunda bir kapanış ayracı oluşur.
- Görüntülenen son sonuç değişmez değer dizesidir
{6324}
.
int value = 6324;
string output = string.Format("{{{0:D}}}", value);
Console.WriteLine(output);
// The example displays the following output:
// {6324}
Dim value As Integer = 6324
Dim output As String = String.Format("{{{0:D}}}", value)
Console.WriteLine(output)
'The example displays the following output
' {6324}
.NET Çerçevesi
Biçim öğesindeki ayraçlar, karşılaşıldıkları sıraya göre sırasıyla yorumlanır. İç içe küme ayraçlarının yorumlanması desteklenmez.
Kaçış ayraçlarının yorumlanması beklenmeyen sonuçlara yol açabilir. Örneğin, bir açılış ayracı, ondalık sayı olarak biçimlendirilmiş sayısal bir değer ve kapanış ayracı görüntülemeyi amaçlayan biçim öğesini {{{0:D}}}
göz önünde bulundurun. Ancak, biçim öğesi aşağıdaki şekilde yorumlanır:
- İlk iki açılış ayracı (
{{
) kaçıştırılmış ve bir açılış ayracı oluşturur. - Sonraki üç karakter (
{0:
) bir biçim öğesinin başlangıcı olarak yorumlanır. - Sonraki karakter (
D
) Ondalık standart sayısal biçim tanımlayıcısı olarak yorumlanır, ancak sonraki iki kaçış ayracı (}}
) tek bir ayraç verir. Sonuçta elde edilen dize (D}
) standart bir sayısal biçim belirleyicisi olmadığı için, bu dize, değişmez bir metin olanD}
'i görüntüleyecek şekilde özel bir biçim dizesi olarak yorumlanır. - Son küme ayracı (
}
), biçim öğesinin sonu olarak yorumlanır. - Görüntülenen son sonuç değişmez değer dizesidir
{D}
. Biçimlendirilecek sayısal değer görüntülenmez.
int value = 6324;
string output = string.Format("{{{0:D}}}",
value);
Console.WriteLine(output);
// The example displays the following output:
// {D}
Dim value As Integer = 6324
Dim output As String = String.Format("{{{0:D}}}",
value)
Console.WriteLine(output)
'The example displays the following output:
' {D}
Kaçış ayraçlarını ve biçim öğelerini yanlış yorumlamamak için kodunuzu yazmanın bir yolu, küme ayraçlarını biçimlendirmek ve öğeleri ayrı olarak biçimlendirmektir. Yani, ilk biçimlendirme işleminde bir açılış süslü parantezi görüntülenir. Sonraki işlemde, biçim öğesinin sonucunu görüntüleyin ve son işlemde sabit bir kapanış ayracı gösterin. Aşağıdaki örnekte bu yaklaşım gösterilmektedir:
int value = 6324;
string output = string.Format("{0}{1:D}{2}",
"{", value, "}");
Console.WriteLine(output);
// The example displays the following output:
// {6324}
Dim value As Integer = 6324
Dim output As String = String.Format("{0}{1:D}{2}",
"{", value, "}")
Console.WriteLine(output)
'The example displays the following output:
' {6324}
Sipariş işleniyor
Bileşik biçimlendirme yöntemine yapılan çağrı, değeri IFormatProvider olmayan bir null
bağımsız değişken içeriyorsa, çalışma zamanı bir IFormatProvider.GetFormat uygulama istemek için ICustomFormatter yöntemini çağırır. Yöntem bir ICustomFormatter uygulama döndürebiliyorsa bileşik biçimlendirme yöntemi çağrılırken önbelleğe alınır.
Parametre listesindeki bir biçim öğesine karşılık gelen her değer aşağıdaki gibi bir dizeye dönüştürülür:
Biçimlendirilecek değer ise
null
boş bir dize String.Empty döndürülür.Eğer bir ICustomFormatter uygulama mevcutsa, çalışma zamanı ortamı Format yöntemini çağırır. Çalışma zamanı, biçim öğesinin
formatString
değerini (eğer mevcut değilsenull
değerini) yönteme geçirir. Çalışma zamanı, IFormatProvider implementasyonu yöntemine de geçirir. ICustomFormatter.Format yöntemine yapılan çağrınull
döndürürse, yürütme sonraki adıma geçer. Aksi takdirde, çağrının ICustomFormatter.Format sonucu döndürülür.Eğer bu değer IFormattable arabirimini uygularsa, arabirimin ToString(String, IFormatProvider) yöntemi çağrılır. Biçim öğesinde bir varsa,
formatString
değeri yönteme geçirilir. Aksi takdirdenull
geçilir. IFormatProvider argümanı aşağıdaki gibi belirlenir:Sayısal bir değer için, null olmayan IFormatProvider bağımsız değişken içeren bir bileşik biçimlendirme yöntemi çağrıldığında, çalışma zamanı, NumberFormatInfo yönteminden bir IFormatProvider.GetFormat nesne ister. Eğer bir tane sağlayamıyorsa, bağımsız değişkenin değeri
null
ise veya bileşik biçimlendirme yönteminin bir IFormatProvider parametresi yoksa, geçerli kültürün NumberFormatInfo nesnesi kullanılır.Bir tarih ve saat değeri için, null olmayan bir IFormatProvider bağımsız değişkeni ile bir bileşik biçimlendirme yöntemi çağrıldığında, çalışma zamanı DateTimeFormatInfo yönteminden bir IFormatProvider.GetFormat nesnesi ister. Aşağıdaki durumlarda, DateTimeFormatInfo bunun yerine geçerli kültürün nesnesi kullanılır:
- IFormatProvider.GetFormat yöntemi bir DateTimeFormatInfo nesne sağlayamıyor.
- Argümanın değeri
null
'dır. - Bileşik biçimlendirme yönteminin parametresi IFormatProvider yoktur.
Diğer türlerdeki nesneler için, bileşik biçimlendirme yöntemi bağımsız IFormatProvider değişkenle çağrılırsa, değeri doğrudan IFormattable.ToString uygulamaya geçirilir. Aksi takdirde,
null
IFormattable.ToString uygulamasına aktarılır.
Parametresiz
ToString
yöntemi çağrılır; bu yöntem ya Object.ToString()'yi geçersiz kılar ya da temel sınıfının davranışını devralır. Bu durumda, bileşen tarafındanformatString
biçim öğesinde belirtilen biçim dizesi (varsa) yoksayılır.
Hizalama, önceki adımlar gerçekleştirildikten sonra uygulanır.
Kod örnekleri
Aşağıdaki örnekte, bileşik biçimlendirme kullanılarak oluşturulan bir dize ve bir nesnenin ToString
yöntemi kullanılarak oluşturulan başka bir dize gösterilmektedir. Her iki biçimlendirme türü de eşdeğer sonuçlar üretir.
string formatString1 = string.Format("{0:dddd MMMM}", DateTime.Now);
string formatString2 = DateTime.Now.ToString("dddd MMMM");
Dim formatString1 As String = String.Format("{0:dddd MMMM}", DateTime.Now)
Dim formatString2 As String = DateTime.Now.ToString("dddd MMMM")
Geçerli günün Mayıs ayındaki bir Perşembe olduğunu varsayarsak, önceki örnekteki her iki dizenin de değeri ABD İngilizcesi kültüründedir Thursday May
.
Console.WriteLine ile aynı işlevselliği String.Formatkullanıma sunar. İki yöntem arasındaki tek fark, String.Format'nın sonucunu bir dize olarak döndürmesi, Console.WriteLine'nin ise sonucu Console nesnesiyle ilişkili çıkış akışına yazmasıdır. Aşağıdaki örnek, Console.WriteLine değerini bir para birimi değerine myNumber
biçimlendirmek için yöntemini kullanır:
int myNumber = 100;
Console.WriteLine($"{myNumber:C}");
// The example displays the following output
// if en-US is the current culture:
// $100.00
Dim myNumber As Integer = 100
Console.WriteLine("{0:C}", myNumber)
'The example displays the following output
'if en-US Is the current culture:
' $100.00
Aşağıdaki örnek, bir nesneyi iki farklı şekilde biçimlendirme dahil olmak üzere birden çok nesneyi biçimlendirmeyi gösterir:
string myName = "Fred";
Console.WriteLine(string.Format("Name = {0}, hours = {1:hh}, minutes = {1:mm}",
myName, DateTime.Now));
// Depending on the current time, the example displays output like the following:
// Name = Fred, hours = 11, minutes = 30
Dim myName As String = "Fred"
Console.WriteLine(String.Format("Name = {0}, hours = {1:hh}, minutes = {1:mm}",
myName, DateTime.Now))
'Depending on the current time, the example displays output Like the following:
' Name = Fred, hours = 11, minutes = 30
Aşağıdaki örnekte, biçimlendirmede genişlik kullanımı gösterilmektedir. Biçimlendirilmiş bağımsız değişkenler, sonuçta elde edilen hizalamayı vurgulamak için dikey çubuk karakterleri (|
) arasına yerleştirilir.
string firstName = "Fred";
string lastName = "Opals";
int myNumber = 100;
string formatFirstName = string.Format("First Name = |{0,10}|", firstName);
string formatLastName = string.Format("Last Name = |{0,10}|", lastName);
string formatPrice = string.Format("Price = |{0,10:C}|", myNumber);
Console.WriteLine(formatFirstName);
Console.WriteLine(formatLastName);
Console.WriteLine(formatPrice);
Console.WriteLine();
formatFirstName = string.Format("First Name = |{0,-10}|", firstName);
formatLastName = string.Format("Last Name = |{0,-10}|", lastName);
formatPrice = string.Format("Price = |{0,-10:C}|", myNumber);
Console.WriteLine(formatFirstName);
Console.WriteLine(formatLastName);
Console.WriteLine(formatPrice);
// The example displays the following output on a system whose current
// culture is en-US:
// First Name = | Fred|
// Last Name = | Opals|
// Price = | $100.00|
//
// First Name = |Fred |
// Last Name = |Opals |
// Price = |$100.00 |
Dim firstName As String = "Fred"
Dim lastName As String = "Opals"
Dim myNumber As Integer = 100
Dim formatFirstName As String = String.Format("First Name = |{0,10}|", firstName)
Dim formatLastName As String = String.Format("Last Name = |{0,10}|", lastName)
Dim formatPrice As String = String.Format("Price = |{0,10:C}|", myNumber)
Console.WriteLine(formatFirstName)
Console.WriteLine(formatLastName)
Console.WriteLine(formatPrice)
Console.WriteLine()
formatFirstName = String.Format("First Name = |{0,-10}|", firstName)
formatLastName = String.Format("Last Name = |{0,-10}|", lastName)
formatPrice = String.Format("Price = |{0,-10:C}|", myNumber)
Console.WriteLine(formatFirstName)
Console.WriteLine(formatLastName)
Console.WriteLine(formatPrice)
'The example displays the following output on a system whose current
'culture Is en-US:
' First Name = | Fred|
' Last Name = | Opals|
' Price = | $100.00|
'
' First Name = |Fred |
' Last Name = |Opals |
' Price = |$100.00 |
Ayrıca bkz.
- WriteLine
- String.Format
- Dize ilişkilendirmesi (C#)
- Dize ilişkilendirme (Visual Basic)
- Biçimlendirme türleri
- Standart sayısal biçim dizeleri
- Özel sayısal biçim dizeleri
- Standart tarih ve saat biçim dizeleri
- Özel tarih ve saat biçim dizeleri
- Standart TimeSpan biçim dizeleri
- Özel TimeSpan biçim dizeleri
- Numaralandırma biçimi dizeleri