Formázott sztringek létrehozása sztring interpolációval
Ez az oktatóanyag bemutatja, hogyan szúrhat be értékeket egy sztringbe sztring interpolációval. Azt is megtudhatja, hogyan szabályozhatja az eredménysztring szövegformázását. A böngészőben C# kódot írhat és futtathat, és azonnal láthatja az eredményeket.
Interpolált sztring létrehozása
Futtassa az alábbi kódot az interaktív ablakban. Válassza az Enter fókusz mód gombot. Ezután írja be a következő kódblokkot az interaktív ablakban (cserélje le <name>
a nevét), és válassza a Futtatás lehetőséget:
var name = "<name>";
Console.WriteLine($"Hello, {name}. It's a pleasure to meet you!");
A kód futtatásakor a Kimenet egy sztringet jelenít meg, amely tartalmazza az Ön nevét az üdvözlésben. A metódushívás sztringargumentuma WriteLine egy interpolált sztringkifejezés. Ez egy olyan, sablonhoz hasonló szerkezet, amely lehetővé teszi egyetlen sztring (az eredmény sztring) létrehozását egy beágyazott kódot tartalmazó sztringből. Az interpolált sztringkifejezések különösen hasznosak az értékek sztringbe való beszúrásához, vagy több sztring összefűzésekor (összefűzve).
A fenti példa két olyan elemet tartalmaz, amelyeknek minden interpolált sztringkifejezésnek rendelkeznie kell:
Egy sztring típusú konstansértéket, melynek nyitó idézőjele előtt
$
karakter szerepel. A$
karakter és az idézőjel között nem lehet szóköz. (Ha látni szeretné, mi történik, ha belefoglal egyet, szúrjon be egy szóközt a$
karakter után az interaktív ablakban, és futtassa a frissített kódot. A C#-fordító a következőt panaszkodja: "Váratlan karakter "$".)Egy vagy több interpolációs kifejezés. Az interpolációs kifejezést nyitó és záró zárójel (
{
és}
) jelzi. A kapcsos zárójelek között használhat bármilyen olyan C#-kifejezést, amely értéket ad vissza (ideértve anull
kulcsszót is).
Próbálkozzunk néhány további sztring-interpolációs példával néhány más adattípussal.
Különböző adattípusok használata
Az előző lépésben sztring interpolációval szúrt be egy sztringet a másikba. Minden interpolációs kifejezés, amely egy interpolált sztringkifejezés része, bármilyen adattípusú lehet. Vegyük fel a különböző adattípusú kifejezések értékeit egy interpolált sztringbe.
Az alábbi példában először egy olyan rekordot határozunk meg, amelynek tagjai és perPackage
tagjai vannakName
Price
. Futtassa a következő kódot az interaktív ablakban:
var item = (Name: "eggplant", Price: 1.99m, perPackage: 3);
var date = DateTime.Now;
Console.WriteLine($"On {date}, the price of {item.Name} was {item.Price} per {item.perPackage} items.");
Vegye figyelembe, hogy az interpolált sztring interpolációs kifejezése item.Price
az eredménysztringben az "1.99" szöveget oldja fel. Ennek az az oka, hogy ha a kifejezés eredményének típusa nem sztring, az eredmény sztringre lesz feloldva a következő módon:
Ha az interpolációs kifejezés kiértékelése
null
üres sztring ("" vagy String.Empty) lesz.Ha az interpolációs kifejezés kiértékelése nem történik meg
null
, általában azToString
eredménykifejezés metódusa lesz meghívva.
A példában szereplő kimenetben a dátum túl pontos (a padlizsán ára nem változik másodpercenként), és az árérték nem jelöl pénznemegységet. A következő lépésben megtanulhatja, hogyan háríthatja el ezeket a problémákat a kifejezéseredmények sztring-ábrázolásának szabályozásával.
Interpolációs kifejezések formázásának szabályozása
Az előző lépésben két rosszul formázott sztring lett beszúrva az eredménysztringbe. Az egyik egy dátumidő típusú érték volt, miközben egyedül a dátumra lett volna szükség. A második egy olyan ár volt, amely nem jelezte a pénznemegységét. Mindkét problémát könnyedén javíthatja. A sztringek interpolációjával megadhatja az adott típusok formázását vezérlő formázási sztringeket . Módosítsa az előző példa hívását úgy, hogy Console.WriteLine
az tartalmazza a dátum- és árkifejezések formátumsztringeit az alábbi sorban látható módon:
Console.WriteLine($"On {date:d}, the price of {item.Name} was {item.Price:C2} per {item.perPackage} items");
A formátumsztring megadásához kövesse az interpolációs kifejezést kettősponttal (":) és a formázási sztringgel. A „d” egy szabványos dátumidő-sztring, mely rövid dátumformátumot jelöl. A „C2” egy szabványos numerikus formázási sztring, mely pénznemet, valamint a tizedesvessző után két számjegyet tartalmazó számot jelöl.
A .NET-kódtárak számos típusa támogatja az előre definiált formázási sztringeket. Ezek közé tartoznak többek között a számtípusok, valamint a dátum- és időtípusok. Ha szeretné megismerni a formázási sztringeket támogató típusok teljes listáját, tekintse át a Formázási sztringek és .NET-típusok című szakaszt a Típusok formázása a .NET-ben című cikkben.
Próbálja meg módosítani a példában szereplő formázási sztringeket, hogy lássa, hogyan befolyásolják a dátum és az idő és a numerikus érték formázását. Módosítsa a {date:d}
interpolált kifejezésben a „d” azonosítót a „t” azonosítóra (rövid idő megjelenítéséhez), az „y” azonosítóra (év és hónap megjelenítéséhez), majd az „yyyy” azonosítóra (négy számjegyű év megjelenítéséhez). Módosítsa a {price:C2}
interpolált kifejezésben a „C2” azonosítót az „e” azonosítóra (exponenciális jelöléshez) és az „F3” azonosítóra (három tizedesjegyet tartalmazó szám megjelenítéséhez).
A formázás szabályozása mellett az eredménysztringben szereplő formázott sztringek mezőszélessége és igazítása is szabályozható. A következő lépésben megtudhatja, hogyan.
Az interpolációs kifejezések mezőszélességének és igazításának szabályozása
Általában, ha egy interpolált sztringkifejezés eredménye sztringre van formázva, a sztring egy eredménysztringben szerepel, szóközök bevezető vagy záró szóközök nélkül. Különösen akkor, ha egy adatkészlettel dolgozik, a mezőszélesség és a szöveg igazításának szabályozása segít olvashatóbb kimenetet eredményezni. Ennek megtekintéséhez futtassa a következő kódot:
var inventory = new Dictionary<string, int>()
{
["hammer, ball pein"] = 18,
["hammer, cross pein"] = 5,
["screwdriver, Phillips #2"] = 14
};
Console.WriteLine($"Inventory on {DateTime.Now:d}");
Console.WriteLine(" ");
Console.WriteLine($"|{"Item",-25}|{"Quantity",10}|");
foreach (var item in inventory)
Console.WriteLine($"|{item.Key,-25}|{item.Value,10}|");
Az elemnevek balra igazítva, a mennyiségük pedig jobbra igazítva látható a kimenetben. Az igazítást úgy adhatja meg, hogy egy interpolációs kifejezés után vesszőt (",") ad hozzá, és kijelöli a mező minimális szélességét. Ha a megadott érték pozitív szám, akkor a mező jobbra van igazítva. Ha negatív szám, akkor a mező balra lesz igazítva.
Távolítsa el a negatív jeleket a {"Item",-25}
kódból, {item.Key,-25}
és futtassa újra a példát. Ezúttal az elemnevek jobbra vannak igazítva.
Egyetlen interpolációs kifejezéshez kombinálhat egy igazítási kijelölőt és egy formátumsztringet. Ehhez először adja meg az igazítást, majd a kettőspontot és a formátumsztringet. Próbálja ki a következő kódot, amely három formázott sztringet jelenít meg meghatározott mezőszélességekkel:
Console.WriteLine($"[{DateTime.Now,-20:d}] Hour [{DateTime.Now,-10:HH}] [{1063.342,15:N2}] feet");
Gratulálunk!
Elvégezte a sztringinterpoláció interaktív oktatóanyagát. A .NET webhelyre látogatva letöltheti a .NET Core SDK-t, létrehozhat egy projektet a számítógépen, és továbbra is kódolódhat.
További információ: Sztring interpoláció.
Problémát tapasztalt ezzel a szakasszal kapcsolatban? Ha igen, küldjön visszajelzést, hogy kijavíthassuk a hibát.