Egyéni numerikus formázási sztringek

Létrehozhat egy egyéni numerikus formázási sztringet, amely egy vagy több egyéni számkijelölőből áll, hogy meghatározza a numerikus adatok formázásának módját. Az egyéni numerikus formázási sztring bármely olyan formátumsztring, amely nem szabványos numerikus formátumú sztring.

Az egyéni numerikus formátumú sztringeket az összes numerikus típus metódusának ToString bizonyos túlterhelései támogatják. Megadhat például egy numerikus formátumú sztringet a típus és ToString(String, IFormatProvider) a ToString(String)Int32 metódusok számára. Az egyéni numerikus formázási sztringeket a .NET összetett formázási funkciója is támogatja, amelyet egyes WriteLineConsoleWrite és StreamWriter osztályok, String.Format metódusok, metódusok és StringBuilder.AppendFormat metódusok is használnak. A sztringek interpolációja az egyéni numerikus formátumú sztringeket is támogatja.

Tipp.

Letöltheti a Formatting Segédprogramot, egy .NET Core Windows Forms-alkalmazást, amellyel formázási sztringeket alkalmazhat numerikus vagy dátum- és időértékekre, és megjelenítheti az eredménysztringet. A forráskód a C# és a Visual Basic esetében érhető el.

Az alábbi táblázat az egyéni numerikus formátumkijelölőket ismerteti, és megjeleníti az egyes formátumkijelölők által előállított mintakimenetet. Az egyéni numerikus formátumú sztringek használatával kapcsolatos további információkért tekintse meg a Jegyzetek szakaszt, a Példa szakaszt pedig a használatuk átfogó szemléltetéséért.

Formátumkijelölő Name Leírás Példák
"0" Nulla helyőrző A nullát lecseréli a megfelelő számjegyre, ha van ilyen; ellenkező esetben a nulla jelenik meg az eredménysztringben.

További információ: A "0" egyéni kijelölő.
1234.5678 ("00000") -> 01235

0.45678 ("0.00", en-US) -> 0,46

0,45678 ("0,00", fr-FR) -> 0,46
"#" Számjegy helyőrzője A "#" szimbólumot lecseréli a megfelelő számjegyre, ha van ilyen; ellenkező esetben az eredménysztringben nem jelenik meg számjegy.

Vegye figyelembe, hogy az eredménysztringben nem jelenik meg számjegy, ha a bemeneti sztring megfelelő számjegye nem jelentős 0. Például: 0003 ("####") –> 3.

További információ: A "#" egyéni kijelölő.
1234.5678 ("#####") -> 1235

0,45678 ("#.##", en-US) –> .46

0,45678 ("#.#", fr-FR) –> 46
"." Tizedesvessző Meghatározza a tizedesjel helyét az eredménysztringben.

További információ: A "." Egyéni kijelölő.
0.45678 ("0.00", en-US) -> 0,46

0,45678 ("0,00", fr-FR) -> 0,46
"," Csoportelválasztó és számskálázás Csoportelválasztóként és számskálázási meghatározóként is szolgál. Csoportelválasztóként egy honosított csoportelválasztó karaktert szúr be az egyes csoportok közé. Számskálázási azonosítóként egy számot 1000-rel oszt el minden megadott vesszőhöz.

További információ: A "," Egyéni meghatározó.
Csoportelválasztó:

2147483647 ("##,#", en-US) -> 2 147 483 647

2147483647 ("##,#", es-ES) -> 2.147.483.647

Skálázási beállítás:

2147483647 ("#,#,,", en-US) -> 2147

2147483647 ("#,#,,", es-ES) -> 2,147
"%" Százalékos helyőrző Megszoroz egy számot 100-tal, és beszúr egy honosított százalékszimbólumot az eredménysztringbe.

További információ: A(z) "%" egyéni azonosító.
0.3697 ("%#0.00", en-US) –> %36.97

0.3697 ("%#0.00", el-GR) –> %36,97

0,3697 ("##.0 %", en-US) –> 37,0 %

0,3697 ("##.0 %", el-GR) –> 37,0 %
"‰" Mille helyőrzőnként Megszoroz egy számot 1000-rel, és beszúr egy honosított per mille szimbólumot az eredménysztringbe.

További információ: A "‰" egyéni kijelölő.
0.03697 ("#0.00‰", en-US) -> 36,97‰

0.03697 ("#0.00‰", ru-RU) -> 36,97‰
"E0"

"E+0"

"E-0"

"e0"

"e+0"

"e-0"
Exponenciális jelölés Ha utána legalább egy 0 (nulla) van, az eredményt exponenciális jelöléssel formázhatja. Az "E" vagy az "e" eset a kitevő szimbólum esetét jelzi az eredménysztringben. Az "E" vagy "e" karaktert követő nullák száma határozza meg a kitevőben lévő számjegyek minimális számát. A pluszjel (+) azt jelzi, hogy egy jel karakter mindig megelőzi a kitevőt. A mínuszjel (-) azt jelzi, hogy egy jel karakter csak negatív kitevőket előz meg.

További információ: Az "E" és az "e" egyéni meghatározók.
987654 ("#0.0e0") –> 98,8e4

1503.92311 ("0.0##e+00") -> 1,504e+03

1.8901385E-16 ("0.0e+00") -> 1,9e-16
"\" Escape karakter A következő karaktert nem egyéni formátumjelölőként, hanem literálként értelmezi.

További információ: A "\" escape karakter.
987654 ("\###00\#") –> #987654#
"sztring"

"sztring"
Literális sztringelválasztó Azt jelzi, hogy a zárt karaktereket változatlanul kell másolni az eredménysztringbe.

További információ: Karakterkonstansok.
68 ("# 'fok'") -> 68 fok

68 ("#" fok") -> 68 fok
; Szakaszelválasztó A pozitív, negatív és nulla számokhoz külön formátumsztringeket tartalmazó szakaszokat definiál.

További információ: A ";" Szakaszelválasztó.
12.345 ("#0.0#;( #0.0#);-\0-") -> 12,35

0 ("#0.0#;( #0.0#);-\0-") -> -0-

-12.345 ("#0.0#;( #0.0#);-\0-") –> (12.35)

12.345 ("#0.0#;( #0.0#)") -> 12.35

0 ("#0.0#;( #0.0#)") –> 0,0

-12.345 ("#0.0#;( #0.0#)") -> (12.35)
Egyéb Minden más karakter A program változatlanul másolja a karaktert az eredménysztringbe.

További információ: Karakterkonstansok.
68 ("# °") -> 68 °

Az alábbi szakaszok részletes információkat nyújtanak az egyéni numerikus formátumok definiálóiról.

Megjegyzés:

A cikkben szereplő C#-példák némelyike a Try.NET beágyazott kódfuttatóban és -játszótéren fut. Kattintson a Futtatás gombra egy példa interaktív ablakban való futtatásához. Miután végrehajtotta a kódot, módosíthatja és futtathatja a módosított kódot a Futtatás gombra kattintva. A módosított kód vagy az interaktív ablakban fut, vagy ha a fordítás sikertelen, az interaktív ablakban megjelenik az összes C#-fordító hibaüzenet.

A "0" egyéni kijelölő

A "0" egyéni formátumjelölő nulla helyőrző szimbólumként szolgál. Ha a formázott értéknek van egy számjegye abban a pozícióban, ahol a nulla megjelenik a formázási sztringben, akkor a program az eredménysztringbe másolja a számjegyet; ellenkező esetben egy nulla jelenik meg az eredménysztringben. A bal szélső nulla pozíciója a tizedespont előtt, a jobb szélső nulla pedig a tizedesvessző után határozza meg az eredménysztringben mindig jelen lévő számjegyek tartományát.

A "00" azonosító miatt az érték a tizedesvesszőt megelőző legközelebbi számjegyre lesz kerekítve, ahol mindig a nullától való lekerekítést használja a rendszer. A 34,5-ös formázás például a "00" értéket eredményezné.

Az alábbi példa több olyan értéket jelenít meg, amelyek a nulla helyőrzőket tartalmazó egyéni formázási sztringek használatával vannak formázva.

double value;

value = 123;
Console::WriteLine(value.ToString("00000"));
Console::WriteLine(String::Format("{0:00000}", value));
// Displays 00123

value = 1.2;
Console::WriteLine(value.ToString("0.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                  "{0:0.00}", value));
// Displays 1.20

Console::WriteLine(value.ToString("00.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:00.00}", value));
// Displays 01.20

CultureInfo^ daDK = CultureInfo::CreateSpecificCulture("da-DK");
Console::WriteLine(value.ToString("00.00", daDK)); 
Console::WriteLine(String::Format(daDK, "{0:00.00}", value));
// Displays 01,20

value = .56;
Console::WriteLine(value.ToString("0.0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0.0}", value));
// Displays 0.6

value = 1234567890;
Console::WriteLine(value.ToString("0,0", CultureInfo::InvariantCulture));	
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0,0}", value));	
// Displays 1,234,567,890      

CultureInfo^ elGR = CultureInfo::CreateSpecificCulture("el-GR");
Console::WriteLine(value.ToString("0,0", elGR));	
Console::WriteLine(String::Format(elGR, "{0:0,0}", value));	
// Displays 1.234.567.890

value = 1234567890.123456;
Console::WriteLine(value.ToString("0,0.0", CultureInfo::InvariantCulture));	
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0,0.0}", value));	
// Displays 1,234,567,890.1  

value = 1234.567890;
Console::WriteLine(value.ToString("0,0.00", CultureInfo::InvariantCulture));	
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0,0.00}", value));	
// Displays 1,234.57 
 double value;

 value = 123;
 Console.WriteLine(value.ToString("00000"));
 Console.WriteLine(String.Format("{0:00000}", value));
 // Displays 00123

 value = 1.2;
 Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                   "{0:0.00}", value));
 // Displays 1.20

 Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                 "{0:00.00}", value));
 // Displays 01.20

 CultureInfo daDK = CultureInfo.CreateSpecificCulture("da-DK");
 Console.WriteLine(value.ToString("00.00", daDK));
 Console.WriteLine(String.Format(daDK, "{0:00.00}", value));
 // Displays 01,20

 value = .56;
 Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture));
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                 "{0:0.0}", value));
 // Displays 0.6

 value = 1234567890;
 Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture));	
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                 "{0:0,0}", value));	
 // Displays 1,234,567,890

 CultureInfo elGR = CultureInfo.CreateSpecificCulture("el-GR");
 Console.WriteLine(value.ToString("0,0", elGR));	
Console.WriteLine(String.Format(elGR, "{0:0,0}", value));	
 // Displays 1.234.567.890

 value = 1234567890.123456;
 Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture));	
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                 "{0:0,0.0}", value));	
 // Displays 1,234,567,890.1

 value = 1234.567890;
 Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture));	
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                 "{0:0,0.00}", value));	
 // Displays 1,234.57
Dim value As Double

value = 123
Console.WriteLine(value.ToString("00000"))
Console.WriteLine(String.Format("{0:00000}", value))
' Displays 00123

value = 1.2
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                  "{0:0.00}", value))
' Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:00.00}", value))
' Displays 01.20
Dim daDK As CultureInfo = CultureInfo.CreateSpecificCulture("da-DK")
Console.WriteLine(value.ToString("00.00", daDK))
Console.WriteLine(String.Format(daDK, "{0:00.00}", value))
' Displays 01,20

value = .56
Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.0}", value))
' Displays 0.6

value = 1234567890
Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0,0}", value))
' Displays 1,234,567,890
Dim elGR As CultureInfo = CultureInfo.CreateSpecificCulture("el-GR")
Console.WriteLine(value.ToString("0,0", elGR))
Console.WriteLine(String.Format(elGR, "{0:0,0}", value))
' Displays 1.234.567.890

value = 1234567890.123456
Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0,0.0}", value))
' Displays 1,234,567,890.1

value = 1234.567890
Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0,0.00}", value))
' Displays 1,234.57

Vissza a táblához

A "#" egyéni kijelölő

A "#" egyéni formátumjelölő számjegy-helyőrző szimbólumként szolgál. Ha a formázott értékben egy számjegy található abban a pozícióban, ahol a "#" szimbólum megjelenik a formázási sztringben, a program ezt a számjegyet az eredménysztringbe másolja. Ellenkező esetben a rendszer semmit sem tárol ebben a pozícióban az eredménysztringben.

Ne feledje, hogy ez a kijelölő soha nem jelenít meg olyan nullát, amely nem jelentős számjegy, még akkor sem, ha a sztringben a nulla az egyetlen számjegy. Csak akkor jelenik meg nulla, ha a megjelenített szám jelentős számjegye.

A "##" formátumsztring miatt az érték a tizedesvesszőt megelőző legközelebbi számjegyre lesz kerekítve, ahol a függvény mindig nullától távol kerekítést használ. A 34.5-ös formázás például a "##" karakterrel a 35-ös értéket eredményezné.

Az alábbi példa több olyan értéket jelenít meg, amelyek számjegyhelyőrzőket tartalmazó egyéni formázási sztringek használatával vannak formázva.

 double value;
 
 value = 1.2;
 Console::WriteLine(value.ToString("#.##", CultureInfo::InvariantCulture));
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                 "{0:#.##}", value));
 // Displays 1.2
 
 value = 123;
 Console::WriteLine(value.ToString("#####"));
 Console::WriteLine(String::Format("{0:#####}", value));
 // Displays 123

 value = 123456;
 Console::WriteLine(value.ToString("[##-##-##]"));      
 Console::WriteLine(String::Format("{0:[##-##-##]}", value));      
// Displays [12-34-56]

 value = 1234567890;
 Console::WriteLine(value.ToString("#"));
 Console::WriteLine(String::Format("{0:#}", value));
 // Displays 1234567890
 
 Console::WriteLine(value.ToString("(###) ###-####"));
 Console::WriteLine(String::Format("{0:(###) ###-####}", value));
 // Displays (123) 456-7890
double value;

value = 1.2;
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#.##}", value));
// Displays 1.2

value = 123;
Console.WriteLine(value.ToString("#####"));
Console.WriteLine(String.Format("{0:#####}", value));
// Displays 123

value = 123456;
Console.WriteLine(value.ToString("[##-##-##]"));
Console.WriteLine(String.Format("{0:[##-##-##]}", value));
 // Displays [12-34-56]

value = 1234567890;
Console.WriteLine(value.ToString("#"));
Console.WriteLine(String.Format("{0:#}", value));
// Displays 1234567890

Console.WriteLine(value.ToString("(###) ###-####"));
Console.WriteLine(String.Format("{0:(###) ###-####}", value));
// Displays (123) 456-7890
Dim value As Double

value = 1.2
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#.##}", value))
' Displays 1.2

value = 123
Console.WriteLine(value.ToString("#####"))
Console.WriteLine(String.Format("{0:#####}", value))
' Displays 123

value = 123456
Console.WriteLine(value.ToString("[##-##-##]"))
Console.WriteLine(String.Format("{0:[##-##-##]}", value))
' Displays [12-34-56]

value = 1234567890
Console.WriteLine(value.ToString("#"))
Console.WriteLine(String.Format("{0:#}", value))
' Displays 1234567890

Console.WriteLine(value.ToString("(###) ###-####"))
Console.WriteLine(String.Format("{0:(###) ###-####}", value))
' Displays (123) 456-7890

Ha olyan eredménysztringet szeretne visszaadni, amelyben a hiányzó számjegyek vagy kezdő nullák szóközökre cserélődnek, használja az összetett formázási funkciót , és adjon meg egy mezőszélességű mezőt, ahogyan az az alábbi példában is látható.

using namespace System;

void main()
{
    Double value = .324;
    Console::WriteLine("The value is: '{0,5:#.###}'", value);
}
// The example displays the following output if the current culture
// is en-US:
//      The value is: ' .324'
using System;

public class SpaceOrDigit
{
   public static void Main()
   {
      Double value = .324;
      Console.WriteLine("The value is: '{0,5:#.###}'", value);
   }
}
// The example displays the following output if the current culture
// is en-US:
//      The value is: ' .324'
Module SpaceExample
    Public Sub Main()
        Dim value As Double = 0.324
        Console.WriteLine("The value is: '{0,5:#.###}'", value)
    End Sub
End Module

' The example displays the following output if the current culture
' is en-US:
'      The value is: ' .324'

Vissza a táblához

A "." egyéni kijelölő

A "." egyéni formátumkijelölő egy honosított tizedeselválasztót szúr be az eredménysztringbe. A formátumsztring első időszaka határozza meg a tizedesjel helyét a formázott értékben; a rendszer figyelmen kívül hagyja a további időszakokat. Ha a formátumjelölő ""-val végződik, csak a jelentős számjegyek lesznek formázva az eredménysztringbe.

Az eredménysztringben tizedesjelként használt karakter nem mindig pont; a formázást NumberDecimalSeparator vezérlő objektum tulajdonsága NumberFormatInfo határozza meg.

Az alábbi példa a "." formátumjelölőt használja a tizedesvessző helyének meghatározásához több eredménysztringben.

 double value;
 
 value = 1.2;
 Console::WriteLine(value.ToString("0.00", CultureInfo::InvariantCulture));
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                 "{0:0.00}", value));
 // Displays 1.20

 Console::WriteLine(value.ToString("00.00", CultureInfo::InvariantCulture));
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                 "{0:00.00}", value));
 // Displays 01.20

 Console::WriteLine(value.ToString("00.00", 
                   CultureInfo::CreateSpecificCulture("da-DK")));
 Console::WriteLine(String::Format(CultureInfo::CreateSpecificCulture("da-DK"),
                   "{0:00.00}", value));
 // Displays 01,20

 value = .086;
 Console::WriteLine(value.ToString("#0.##%", CultureInfo::InvariantCulture)); 
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                 "{0:#0.##%}", value)); 
 // Displays 8.6%
  
 value = 86000;
 Console::WriteLine(value.ToString("0.###E+0", CultureInfo::InvariantCulture));
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                   "{0:0.###E+0}", value));
// Displays 8.6E+4
double value;

value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.00}", value));
// Displays 1.20

Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:00.00}", value));
// Displays 01.20

Console.WriteLine(value.ToString("00.00",
                  CultureInfo.CreateSpecificCulture("da-DK")));
Console.WriteLine(String.Format(CultureInfo.CreateSpecificCulture("da-DK"),
                  "{0:00.00}", value));
// Displays 01,20

value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#0.##%}", value));
// Displays 8.6%

value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                  "{0:0.###E+0}", value));
 // Displays 8.6E+4
Dim value As Double

value = 1.2
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.00}", value))
' Displays 1.20

Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:00.00}", value))
' Displays 01.20

Console.WriteLine(value.ToString("00.00", _
                  CultureInfo.CreateSpecificCulture("da-DK")))
Console.WriteLine(String.Format(CultureInfo.CreateSpecificCulture("da-DK"),
                  "{0:00.00}", value))
' Displays 01,20

value = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#0.##%}", value))
' Displays 8.6%

value = 86000
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                  "{0:0.###E+0}", value))
' Displays 8.6E+4

Vissza a táblához

A "," egyéni kijelölő

A "," karakter csoportelválasztóként és számskálázási azonosítóként is szolgál.

  • Csoportelválasztó: Ha egy szám szerves számjegyeit formázó két számjegyhelyőrző (0 vagy #) között egy vagy több vessző van megadva, a kimenet szerves részének minden egyes számcsoportja között beszúr egy csoportelválasztó karaktert.

    Az NumberGroupSeparator aktuális NumberFormatInfo objektum és NumberGroupSizes tulajdonságai határozzák meg a számcsoportelválasztóként használt karaktert és az egyes számcsoportok méretét. Ha például a "#,#" sztringet és az invariáns kultúrát használja az 1000-es szám formázására, akkor a kimenet "1000".

  • Számskálázási azonosító: Ha egy vagy több vessző közvetlenül az explicit vagy implicit tizedesvessző bal oldalán van megadva, a formázandó szám 1000-rel van osztva minden egyes vesszőhöz. Ha például a "0" sztring a 100 milliós szám formázására szolgál, akkor a kimenet "100".

A csoportelválasztót és a számskálázási azonosítót ugyanabban a formátumsztringben használhatja. Ha például a "#,0" sztring és az invariáns kultúra az egymilliárdos szám formázására szolgál, akkor a kimenet "1000".

Az alábbi példa a vessző csoportelválasztóként való használatát mutatja be.

double value = 1234567890;
Console::WriteLine(value.ToString("#,#", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:#,#}", value));
// Displays 1,234,567,890      

Console::WriteLine(value.ToString("#,##0,,", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:#,##0,,}", value));
// Displays 1,235      	
double value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,#}", value));
// Displays 1,234,567,890

Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,##0,,}", value));
// Displays 1,235      	
Dim value As Double = 1234567890
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,#}", value))
' Displays 1,234,567,890

Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,##0,,}", value))
' Displays 1,235

Az alábbi példa a vessző számskálázási beállításként való használatát szemlélteti.

  double value = 1234567890;
  Console::WriteLine(value.ToString("#,,", CultureInfo::InvariantCulture));	
  Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                  "{0:#,,}", value));	
  // Displays 1235   
  
  Console::WriteLine(value.ToString("#,,,", CultureInfo::InvariantCulture));
  Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                  "{0:#,,,}", value));
// Displays 1  
  
  Console::WriteLine(value.ToString("#,##0,,", CultureInfo::InvariantCulture));       
  Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                  "{0:#,##0,,}", value));       
// Displays 1,235
double value = 1234567890;
Console.WriteLine(value.ToString("#,,", CultureInfo.InvariantCulture));	
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,,}", value));	
// Displays 1235

Console.WriteLine(value.ToString("#,,,", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,,,}", value));
// Displays 1

Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,##0,,}", value));
// Displays 1,235
Dim value As Double = 1234567890
Console.WriteLine(value.ToString("#,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, "{0:#,,}", value))
' Displays 1235

Console.WriteLine(value.ToString("#,,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,,,}", value))
' Displays 1

Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#,##0,,}", value))
' Displays 1,235

Vissza a táblához

A(z) "%" egyéni azonosító

A formázási sztringek százalékos előjele (%) miatt a szám megszorozva lesz 100-mal a formázás előtt. A honosított százalékos szimbólum be lesz szúrva a számba azon a helyen, ahol a %megjelenik a formátumsztringben. A használt százalék karaktert az PercentSymbol aktuális NumberFormatInfo objektum tulajdonsága határozza meg.

Az alábbi példa több egyéni formázási sztringet határoz meg, amelyek tartalmazzák a "%" egyéni azonosítót.

double value = .086;
Console::WriteLine(value.ToString("#0.##%", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:#0.##%}", value));
// Displays 8.6%      
double value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#0.##%}", value));
// Displays 8.6%
Dim value As Double = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#0.##%}", value))
' Displays 8.6%

Vissza a táblához

A "‰" egyéni kijelölő

A formázási sztringben a mille karakterenként (‰ vagy \u2030) a szám megszorozva lesz 1000-rel a formázás előtt. A függvény a visszaadott sztringbe beszúrja a megfelelő ezredmásodpercet azon a helyen, ahol a ‰ szimbólum megjelenik a formátumsztringben. A használt mille karaktert annak az objektumnak a NumberFormatInfo.PerMilleSymbol tulajdonsága határozza meg, amely kultúraspecifikus formázási információkat biztosít.

Az alábbi példa egy egyéni formátumsztringet határoz meg, amely tartalmazza a "‰" egyéni kijelölőt.

double value = .00354;
String^ perMilleFmt = "#0.## " + '\u2030';
Console::WriteLine(value.ToString(perMilleFmt, CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:" + perMilleFmt + "}", value));
// Displays 3.54‰      
double value = .00354;
string perMilleFmt = "#0.## " + '\u2030';
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:" + perMilleFmt + "}", value));
// Displays 3.54‰
Dim value As Double = .00354
Dim perMilleFmt As String = "#0.## " & ChrW(&h2030)
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:" + perMilleFmt + "}", value))
' Displays 3.54 ‰

Vissza a táblához

Az "E" és az "e" egyéni meghatározók

Ha az "E", "E+", "E-", "e", "e+" vagy "e-" sztringek bármelyike szerepel a formátumsztringben, és azokat azonnal legalább egy nulla követi, a számot tudományos jelöléssel formázza a szám és a kitevő közé beszúrt "E" vagy "e" karakterrel. A tudományos jelölési mutatót követő nullák száma határozza meg a kitevő számára kiírandó számjegyek minimális számát. Az "E+" és az "e+" formátum azt jelzi, hogy a pluszjelnek vagy a mínuszjelnek mindig meg kell előznie a kitevőt. Az "E", "E-", "e" vagy "e-" formátum azt jelzi, hogy egy jel karakternek csak negatív kitevőket kell megelőznie.

Az alábbi példa számos numerikus értéket formáz a tudományos jelölést meghatározók használatával.

double value = 86000;
Console::WriteLine(value.ToString("0.###E+0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0.###E+0}", value));
// Displays 8.6E+4

Console::WriteLine(value.ToString("0.###E+000", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0.###E+000}", value));
// Displays 8.6E+004

Console::WriteLine(value.ToString("0.###E-000", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0.###E-000}", value));
// Displays 8.6E004
double value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.###E+0}", value));
// Displays 8.6E+4

Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.###E+000}", value));
// Displays 8.6E+004

Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.###E-000}", value));
// Displays 8.6E004
Dim value As Double = 86000
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.###E+0}", value))
' Displays 8.6E+4

Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.###E+000}", value))
' Displays 8.6E+004

Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.###E-000}", value))
' Displays 8.6E004

Vissza a táblához

A "\" feloldó karakter

A formátumsztring "#", "0", ".", "","","%" és "‰" szimbólumait a rendszer nem literális karakterként, hanem formátumjelölőként értelmezi. Az egyéni formázási sztringben elfoglalt helyüktől függően a kis- és nagybetűs "E", valamint a + és - szimbólumok formátumjelölőként is értelmezhetők.

Ha meg szeretné akadályozni, hogy egy karakter formátumjelölőként legyen értelmezve, előzheti meg fordított perjellel, vagyis a feloldó karakterrel. A feloldó karakter azt jelzi, hogy a következő karakter egy karakterkonstans, amelyet változatlanul kell szerepeltetni az eredménysztringben.

Ha egy fordított perjelet szeretne belefoglalni egy eredménysztringbe, meg kell szabadulnia egy másik fordított perjellel (\\).

Megjegyzés:

Egyes fordítók, például a C++ és a C# fordítók, egy fordított perjel karaktert is értelmezhetnek escape karakterként. Annak érdekében, hogy a formázáskor a sztring megfelelően legyen értelmezve, használhatja a szó szerinti sztring literális karakterét (a @ karaktert) a C#-sztring előtt, vagy hozzáadhat egy másik fordított perjelet a C# és a C++ sztring minden fordított perjele előtt. Az alábbi C#-példa mindkét megközelítést szemlélteti.

Az alábbi példa a feloldó karakter használatával megakadályozza, hogy a formázási művelet a "#", a "0" és a "\" karaktereket feloldó karakterként vagy formátumjelölőként értelmezze. A C#-példák egy további fordított perjelet használnak annak biztosítására, hogy a fordított perjelek literális karakterként legyenek értelmezve.

int value = 123;
Console::WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#"));
Console::WriteLine(String::Format("{0:\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#}",
                                  value));
// Displays ### 123 dollars and 00 cents ###

Console::WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \0\0 cents \\#\\#\\#"));
Console::WriteLine(String::Format("{0:\\#\\#\\# ##0 dollars and \0\0 cents \\#\\#\\#}",
                                value));
// Displays ### 123 dollars and 00 cents ###

Console::WriteLine(value.ToString("\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\"));
Console::WriteLine(String::Format("{0:\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\}",
                                value));
// Displays \\\ 123 dollars and 00 cents \\\

Console::WriteLine(value.ToString("\\\\\\ ##0 dollars and \0\0 cents \\\\\\"));
Console::WriteLine(String::Format("{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}",
                                value));
// Displays \\\ 123 dollars and 00 cents \\\
int value = 123;
Console.WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#"));
Console.WriteLine(String.Format("{0:\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#}",
                                value));
// Displays ### 123 dollars and 00 cents ###

Console.WriteLine(value.ToString(@"\#\#\# ##0 dollars and \0\0 cents \#\#\#"));
Console.WriteLine(String.Format(@"{0:\#\#\# ##0 dollars and \0\0 cents \#\#\#}",
                                value));
// Displays ### 123 dollars and 00 cents ###

Console.WriteLine(value.ToString("\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\"));
Console.WriteLine(String.Format("{0:\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\}",
                                value));
// Displays \\\ 123 dollars and 00 cents \\\

Console.WriteLine(value.ToString(@"\\\\\\ ##0 dollars and \0\0 cents \\\\\\"));
Console.WriteLine(String.Format(@"{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}",
                                value));
// Displays \\\ 123 dollars and 00 cents \\\
Dim value As Integer = 123
Console.WriteLine(value.ToString("\#\#\# ##0 dollars and \0\0 cents \#\#\#"))
Console.WriteLine(String.Format("{0:\#\#\# ##0 dollars and \0\0 cents \#\#\#}",
                                value))
' Displays ### 123 dollars and 00 cents ###

Console.WriteLine(value.ToString("\\\\\\ ##0 dollars and \0\0 cents \\\\\\"))
Console.WriteLine(String.Format("{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}",
                                value))
' Displays \\\ 123 dollars and 00 cents \\\

Vissza a táblához

A ";" szakaszelválasztó

A pontosvessző (;) egy feltételes formátumkijelölő, amely eltérő formázást alkalmaz egy számra attól függően, hogy értéke pozitív, negatív vagy nulla. Ennek a viselkedésnek a létrehozásához egy egyéni formátumsztring legfeljebb három pontosvesszővel elválasztott szakaszt tartalmazhat. Ezeket a szakaszokat az alábbi táblázat ismerteti.

Szakaszok száma Leírás
Egy szakasz A formátumsztring minden értékre érvényes.
Két szakasz Az első szakasz a pozitív értékekre és nullákra, a második pedig a negatív értékekre vonatkozik.

Ha a formázandó szám negatív, de a második szakasz formátuma szerinti kerekítés után nullává válik, az eredményül kapott nulla az első szakasz szerint lesz formázva.
Három szakasz Az első szakasz a pozitív értékekre, a második szakasz a negatív értékekre, a harmadik pedig a nullákra vonatkozik.

A második szakasz üresen hagyható (mivel nincs semmi a pontosvesszők között), ebben az esetben az első szakasz az összes nemzero értékre vonatkozik.

Ha a formázandó szám nem nulla, de az első vagy a második szakasz formátuma szerinti kerekítés után nullává válik, az eredményül kapott nullát a harmadik szakasz szerint formázza a rendszer.

A szakaszelválasztók figyelmen kívül hagyják a számhoz tartozó, a végleges érték formázásakor már nem használt formázást. A negatív értékek például mindig mínuszjel nélkül jelennek meg a szakaszelválasztók használatakor. Ha azt szeretné, hogy a végső formázott érték mínuszjelet tartalmazzon, a mínuszjelet kifejezetten az egyéni formátumjelölő részeként kell megadnia.

Az alábbi példa a ";" formátumkijelölőt használja a pozitív, negatív és nulla számok eltérő formázására.

double posValue = 1234;
double negValue = -1234;
double zeroValue = 0;

String^ fmt2 = "##;(##)";
String^ fmt3 = "##;(##);**Zero**";

Console::WriteLine(posValue.ToString(fmt2));  
Console::WriteLine(String::Format("{0:" + fmt2 + "}", posValue));    
// Displays 1234

Console::WriteLine(negValue.ToString(fmt2));  
Console::WriteLine(String::Format("{0:" + fmt2 + "}", negValue));    
// Displays (1234)

Console::WriteLine(zeroValue.ToString(fmt3)); 
Console::WriteLine(String::Format("{0:" + fmt3 + "}", zeroValue));
// Displays **Zero**
double posValue = 1234;
double negValue = -1234;
double zeroValue = 0;

string fmt2 = "##;(##)";
string fmt3 = "##;(##);**Zero**";

Console.WriteLine(posValue.ToString(fmt2));
Console.WriteLine(String.Format("{0:" + fmt2 + "}", posValue));
// Displays 1234

Console.WriteLine(negValue.ToString(fmt2));
Console.WriteLine(String.Format("{0:" + fmt2 + "}", negValue));
// Displays (1234)

Console.WriteLine(zeroValue.ToString(fmt3));
Console.WriteLine(String.Format("{0:" + fmt3 + "}", zeroValue));
// Displays **Zero**
Dim posValue As Double = 1234
Dim negValue As Double = -1234
Dim zeroValue As Double = 0

Dim fmt2 As String = "##;(##)"
Dim fmt3 As String = "##;(##);**Zero**"

Console.WriteLine(posValue.ToString(fmt2))
Console.WriteLine(String.Format("{0:" + fmt2 + "}", posValue))
' Displays 1234

Console.WriteLine(negValue.ToString(fmt2))
Console.WriteLine(String.Format("{0:" + fmt2 + "}", negValue))
' Displays (1234)

Console.WriteLine(zeroValue.ToString(fmt3))
Console.WriteLine(String.Format("{0:" + fmt3 + "}", zeroValue))
' Displays **Zero**

Vissza a táblához

Karakterkonstansok

Az egyéni numerikus formátumú sztringben megjelenő formázási azonosítók mindig formázási karakterekként és soha nem konstans karakterekként vannak értelmezve. Ez a következő karaktereket tartalmazza:

A többi karakter mindig karakterkonstansként van értelmezve, és egy formázási műveletben változatlanul szerepel az eredménysztringben. Elemzési művelet esetén pontosan meg kell egyezniük a bemeneti sztringben szereplő karakterekkel; az összehasonlítás megkülönbözteti a kis- és nagybetűkét.

Az alábbi példa a literális karakteregységek (ebben az esetben ezrek) gyakori használatát szemlélteti:

double n = 123.8;
Console.WriteLine($"{n:#,##0.0K}");
// The example displays the following output:
//      123.8K
Dim n As Double = 123.8
Console.WriteLine($"{n:#,##0.0K}")
' The example displays the following output:
'       123.8K

Kétféleképpen jelezhető, hogy a karaktereket nem formázási karakterekként, hanem literális karakterekként kell értelmezni, hogy belefoglalhatók legyenek egy eredménysztringbe, vagy sikeresen elemezhetők legyenek egy bemeneti sztringben:

  • Egy formázási karakter elszabadításával. További információ: "\" feloldó karakter.

  • Ha a teljes literális sztringet idéző aposztrófok közé ágyazza.

Az alábbi példa mindkét módszert használja a fenntartott karakterek egyéni numerikus formátumú sztringbe való belefoglalására.

double n = 9.3;
Console.WriteLine($@"{n:##.0\%}");
Console.WriteLine($@"{n:\'##\'}");
Console.WriteLine($@"{n:\\##\\}");
Console.WriteLine();
Console.WriteLine($"{n:##.0'%'}");
Console.WriteLine($@"{n:'\'##'\'}");
// The example displays the following output:
//      9.3%
//      '9'
//      \9\
//
//      9.3%
//      \9\
Dim n As Double = 9.3
Console.WriteLine($"{n:##.0\%}")
Console.WriteLine($"{n:\'##\'}")
Console.WriteLine($"{n:\\##\\}")
Console.WriteLine()
Console.WriteLine($"{n:##.0'%'}")
Console.WriteLine($"{n:'\'##'\'}")
' The example displays the following output:
'      9.3%
'      '9'
'      \9\
'
'      9.3%
'      \9\

Jegyzetek

Lebegőpontos végtelenségek és NaN

A formázási sztringtől függetlenül, ha egy Half, Single, vagy Double lebegőpontos típus értéke pozitív végtelen, negatív végtelen vagy nem szám (NaN), a formázott sztring az aktuálisan PositiveInfinitySymbolNegativeInfinitySymbolalkalmazható NumberFormatInfo objektum által megadott érték vagy NaNSymbol tulajdonság értéke.

Vezérlőpult beállítások

A Területi és nyelvi beállítások elem beállításai Vezérlőpult befolyásolják a formázási művelet által létrehozott eredménysztringet. Ezek a beállítások az aktuális kultúrához társított objektum inicializálására NumberFormatInfo szolgálnak, az aktuális kultúra pedig a formázás szabályozására szolgáló értékeket biztosít. A különböző beállításokat használó számítógépek különböző eredménysztringeket hoznak létre.

Ezenkívül ha a CultureInfo(String) konstruktor használatával egy olyan új CultureInfo objektumot hoz létre, amely az aktuális rendszerkultúra kultúráját képviseli, a területi és nyelvi beállítások elem által a Vezérlőpult által létrehozott testreszabások az új CultureInfo objektumra lesznek alkalmazva. A konstruktor használatával CultureInfo(String, Boolean) olyan objektumot CultureInfo hozhat létre, amely nem tükrözi a rendszer testreszabását.

Kerekítési és rögzítettpontos formázási sztringek

Rögzítettpontos formázási sztringek (azaz olyan formázási sztringek esetén, amelyek nem tartalmaznak tudományos jelölésű formázási karaktereket), a számok annyi tizedesjegyre vannak kerekítve, mint a tizedesvessző jobb oldalán lévő számjegyhelyőrzők. Ha a formátumsztring nem tartalmaz tizedesvesszőt, a szám a legközelebbi egész számra lesz kerekítve. Ha a szám több számjegyet tartalmaz, mint a tizedesvessző bal oldalán található számjegyhelyőrzők, a további számjegyeket a program közvetlenül az első számjegy helyőrzője előtt másolja az eredménysztringbe.

Vissza a táblához

Example

Az alábbi példa két egyéni numerikus formátumú sztringet mutat be. Mindkét esetben a számjegy helyőrzője (#) megjeleníti a numerikus adatokat, és az összes többi karaktert az eredménysztringbe másolja.

double number1 = 1234567890;
String^ value1 = number1.ToString("(###) ###-####");
Console::WriteLine(value1);

int number2 = 42;
String^ value2 = number2.ToString("My Number = #");
Console::WriteLine(value2);
// The example displays the following output:
//       (123) 456-7890
//       My Number = 42
double number1 = 1234567890;
string value1 = number1.ToString("(###) ###-####");
Console.WriteLine(value1);

int number2 = 42;
string value2 = number2.ToString("My Number = #");
Console.WriteLine(value2);
// The example displays the following output:
//       (123) 456-7890
//       My Number = 42
Dim number1 As Double = 1234567890
Dim value1 As String = number1.ToString("(###) ###-####")
Console.WriteLine(value1)

Dim number2 As Integer = 42
Dim value2 As String = number2.ToString("My Number = #")
Console.WriteLine(value2)
' The example displays the following output:
'       (123) 456-7890
'       My Number = 42

Vissza a táblához

Kapcsolódó információk