Programlarımızda sık yaptığımız işlerden birisi de sayıları
veya string tipindeki ifadeleri belli
bir formata göre yazdırmaktır. Mesela, Ürün fiyatının binler
basamakları nokta ile ayrılması ve virgülden sonra sadece iki rakamın
gösterilmesinin sağlanması gibi. Bu makalemizde,
bu ve benzer isteklerimizi karşılayan string.format fonksiyonunu
inceleyeceğiz.
Genel
olarak:
String yenistring=
String.Format(“Birim Fiyatı : {0}”,fiyat); |
Burada
{0} ifadesiyle,
ifadenin yerine fiyat isimli değişkenin geleceğini belirtiyoruz. Bu
şekilde birden fazla da değişken tanımlaması yapabiliriz, ancak burada
değişkene hiçbir
format uygulamadık. Sadece
indeks {0} da yazılabildiği gibi, aşağıdaki gibi köşeli parantezlerin içersindeki opsiyonel olan parametrelerde alabilir.
{
index[,alignment][:formatString]}
alignment :
hizalama + veya
– tamsayı değerlerini alabilir, + sağa dayalı, - ise sola dayalı
sıralanmasını sağlar. Örneğin;
String.Format(">
{1,10}< ”,
“Sağa”);
Çıktısı: > Hello<
String.Format(">{1,-10} <”,
“Sola”);
Çıktısı: >Hello <
|
:formatstring :
format
katarı
Dikkat
ederseniz alignment virgül(,) ile ayrılırken, formatstring’i üst-üste iki
nokta(:) ile
ayırıyoruz. Formatstring parametresi değişkenlerin belirli bir formatta
gösterilmesini sağlamaktadır. Örneklere bakacak olursak kullanım biçimi kolayca anlaşılabilir.
Basit Format:
Belirteç
|
İsmi
|
Format
|
Örnek 1(double 2.25 için)
|
Örnek 2 (int 22500 için)
|
C
veya c
|
Currency
|
{0:c}
|
2,25 YTL
|
22.500,00 YTL
|
D
veya d
|
Decimal
|
{0:d}
|
Hata
|
22500
|
E
veya e
|
Exponential
|
{0:e}
|
2,250000e+000
|
2.250000e+004
|
F
veya f
|
Fixed-point
|
{0:f}
|
2,25
|
22500,00
|
G
veya g
|
General
|
{0:g}
|
2,25
|
22500
|
N
veya n
|
Number
|
{0:n}
|
2,25
|
22.500,00
|
P
veya p
|
Percent
|
{0:p}
|
%225,00
|
%2.250.000,00
|
R
veya r
|
Round-Trip
|
{0:r}
|
2,25
|
Hata
|
X
veya x
|
Hexadecimal
|
{0:x}
|
Hata
|
57e4
|
Örnek
VB |
C# |
Dim girdi as Double
Dim cikti as String
girdi=2.25
cikti=String.Format(“{0:c}”,girdi)
Sonuç
------------------------------
Cikti=2,25 YTL
|
double girdi;
string cikti;
girdi=2.25;
cikti=String.Format(“{0:c}”,girdi);
Sonuç
------------------------------
Cikti=2,25 YTL
|
Özel Format:
Belirteç
|
İsmi
|
Format
|
Örnek1(1200.35 için)
|
0
|
Zero placeholder
|
{0:00.0000}
|
1200,3500
|
#
|
Digit placeholder
|
{0:(#).##}
|
(1200),35
|
.
|
Decimal point
|
{0:0.0}
|
1200,4
|
,
|
Thousand separator
|
{0:0,0}
|
1.200
|
,.
|
Number scaling
|
{0:0,.}
|
1
|
%
|
Percent
|
{0:0%}
|
120035%
|
e
|
Exponent placeholder
|
{0:00e+0}
|
12e+2
|
Örnek
VB |
C# |
Dim girdi as Double
Dim cikti as String
girdi=1200.35
cikti=String.Format(“{0:(#).##}”,girdi)
Sonuç ------------------------------
Cikti=(1200),35
|
double girdi;
string cikti;
girdi=1200.35;
cikti=String.Format(“{0:(#).##}”,girdi);
Sonuç ------------------------------
Cikti=(1200),35
|
Tarih Formatlama
Belirteç
|
isim
|
Örnek(DateTime.Now() için)
|
d
|
Short date
|
01.04.2005
|
D
|
Long date
|
01 nisan 2005 Cuma
|
t
|
Short time
|
20:24
|
T
|
Long time
|
20:24:27
|
f
|
Full date & time
|
01 Nisan 2005 Cuma 20:24
|
F
|
Full date & time (long)
|
01 Nisan 2005 Cuma 20:24:27
|
g
|
Default date & time
|
01.04.2005 20:24
|
G
|
Default date & time (long)
|
01.04.2005 20:24:27
|
M
|
Month day pattern
|
01 Nisan
|
r
|
RFC1123 date string
|
Fri, 01 Apr 2005 20:24:27 GMT
|
s
|
Sortable date string
|
2005-04-01 20:24:27
|
u
|
Universal sortable, local time
|
2005-04-01 T20:24:27Z
|
U
|
Universal sortable, GMT
|
01 Nisan 2005 Cuma 17:24:27
|
Y
|
Year month pattern
|
Nisan 2005
|
Örnek
VB |
C# |
Dim girdi as DateTime
Dim cikti as String
girdi = DateTime.Now()
cikti=String.Format(“{0:M}”,girdi)
Sonuç ------------------------------
Cikti=01 Nisan
|
DateTime girdi;
string cikti;
girdi = DateTime.Now;
cikti=String.Format(“{0:M}”,girdi);
Sonuç ------------------------------
Cikti=01 Nisan
|
Özel Tarih Formatlama
Belirteç
|
İsmi
|
Örnek
|
Örnek Çıktısı
|
dd
|
Day
|
{0:dd}
|
01
|
ddd
|
Day Name
|
{0:ddd}
|
Cum
|
dddd
|
Full Day Name
|
{0:dddd}
|
Cuma
|
f, ff, ...
|
Second fractions
|
{0:fff}
|
531
|
gg, ...
|
Era
|
{0:gg}
|
A.D.
|
hh
|
2
dgit hour
|
{0:hh}
|
08
|
HH
|
2
digit hour(24 Hour)
|
{0:HH}
|
20
|
mm
|
Minute 00-59
|
{0:mm}
|
53
|
MM
|
Minute 01-12
|
{0:MM}
|
04
|
MMM
|
Month abbreviation
|
{0:MMM}
|
Nis
|
MMMM
|
Full month name
|
{0:MMMM}
|
Nisan
|
ss
|
Seconds 00-59
|
{0:ss}
|
56
|
tt
|
AM or PM
|
{0:tt}
|
*
|
yy
|
Year, 2 digits
|
{0:yy}
|
05
|
yyyy
|
Year
|
{0:yyyy}
|
2005
|
zz
|
Timezone offset, 2 digits
|
{0:zz}
|
+03
|
zzz
|
Full timezone offset
|
{0:zzz}
|
+03:00
|
:
|
Separator
|
{0:hh:mm:ss}
|
08:53:56
|
/
|
Separator
|
{0:dd/MM/yyyy}
|
01/04/2005
|
Örnek
VB |
C# |
Dim girdi as DateTime
Dim cikti as String
girdi = DateTime.Now()
cikti=String.Format(“{0:ddd}”,girdi)
Sonuç
---------------------------
Cikti=Cum
|
DateTime girdi;
string cikti;
girdi = DateTime.Now;
cikti=String.Format(“{0:ddd}”,girdi);
Sonuç
---------------------------
Cikti=Cum
|
* Dil olarak İngilizce ayarlanmışsa PM/AM değerlerini
göstermektedir, Türkçe ise boş dönmektedir.
Ekstra Örnek1:
String.Format("{0:#,###.00;-#,###.00;0}",
değer); |
Burada ilk format pozitif sayılar için, ikinci format
negatif sayılar ve son format da 0(sıfır) girildiğinde uygulanır; değerin veri türü
double’ dır.
Girdi: 12050.230 Çıktı: 12,050.23
Girdi: -12050.230
Çıktı: -12,050.23
Girdi: 0 Çıktı: 0 |
Ekstra Örnek2:
String.Format("{0:(###) ###-####}", 8005551212);
Çıktı : (800) 555-1212 |
NOT: Formatlamada formatlama yapacağımız veri türü
önemlidir, mesela sayı formatlarında double veya int, tarih için datetime,
metin için ise string türünde değişkenlerinin girilmesi gerekir.
Formatlama hakkında daha detaylı
bilgi için http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconFormattingOverview.asp?frame=true
Kaynaklar : http://www.stevex.org/,
MSDN Library.
Maxat Cumayev
[email protected]
Makale:
String.Format Fonksiyonu C#, Visual C# ve .NET Maxat Cumayev
|