Interpolált sztringek (visual basic reference)
Sztringek létrehozására szolgál. Az interpolált sztring úgy néz ki, mint egy interpolált kifejezéseket tartalmazó sablonsztring. Az interpolált sztring olyan sztringet ad vissza, amely az általa tartalmazott interpolált kifejezéseket a sztringreprezentációkkal helyettesíti. Ez a funkció a Visual Basic 14-ben és újabb verzióiban érhető el.
Az interpolált sztring argumentumai könnyebben érthetők, mint az összetett formátumú sztringek. Például az interpolált sztring
Console.WriteLine($"Name = {name}, hours = {hours:hh}")
két interpolált kifejezést tartalmaz: "{name}" és "{hours:hh}". Az ezzel egyenértékű összetett formátum sztringje a következő:
Console.WriteLine("Name = {0}, hours = {1:hh}", name, hours)
Az interpolált sztring szerkezete a következő:
$"<text> {<interpolated-expression> [,<field-width>] [:<format-string>] } <text> ..."
ahol:
A mezőszélesség egy aláírt egész szám, amely a mező karaktereinek számát jelzi. Ha pozitív, a mező jobbra van igazítva; ha negatív, balra igazított.
A format-string a formázandó objektum típusának megfelelő formátumsztring. Egy érték például DateTime lehet egy szabványos dátum- és időformátum-sztring, például "D" vagy "d".
Fontos
A sztringet indító és "
a $
sztring között nem lehet szóköz. Ez fordítási hibát okoz.
Az interpolált sztringeket bárhol használhatja, ahol sztringkonstanst használhat. Az interpolált sztring minden alkalommal kiértékelésre kerül, amikor az interpolált sztringgel rendelkező kód végrehajtása történik. Ez lehetővé teszi egy interpolált sztring definíciójának és kiértékelésének elkülönítését.
Ha egy kapcsos kapcsos zárójelet ("{" vagy "}") szeretne egy interpolált sztringben szerepeltetni, használjon két kapcsos kapcsos zárójelet({{) vagy "}}". További részletekért tekintse meg az Implicit konverziók szakaszt.
Ha az interpolált sztring más, speciális jelentésű karaktereket tartalmaz egy interpolált sztringben, például idézőjelet ("), kettőspontot (:) vagy vesszőt (,), akkor meg kell őket szökni, ha literális szövegben fordulnak elő, vagy zárójelekkel tagolt kifejezésben kell szerepelniük, ha az interpolált kifejezés nyelvi elemei. Az alábbi példa az idézőjelek elől menekül, hogy belefoglalja őket az eredménysztringbe:
Public Module Example
Public Sub Main()
Dim name = "Horace"
Dim age = 34
Dim s1 = $"He asked, ""Is your name {name}?"", but didn't wait for a reply."
Console.WriteLine(s1)
Dim s2 = $"{name} is {age:D3} year{If(age = 1, "", "s")} old."
Console.WriteLine(s2)
End Sub
End Module
' The example displays the following output:
' He asked, "Is your name Horace?", but didn't wait for a reply.
' Horace is 034 years old.
Implicit konverziók
Egy interpolált sztringből három implicit típusú átalakítás van:
Interpolált sztring Stringátalakítása . Az alábbi példa egy sztringet ad vissza, amelynek interpolált sztringkifejezéseit lecserélték a sztringre. Példa:
Public Module Example Public Sub Main() Dim name = "Bartholomew" Dim s1 = $"Hello, {name}!" Console.WriteLine(s1) End Sub End Module ' The example displays the following output: ' Hello, Bartholomew! ' </Snippet1>
Ez egy sztringértelmezés végeredménye. A kettős kapcsos zárójelek ("{{" és "}}") minden előfordulása egyetlen kapcsos kapcsos zárójelké alakul át.
Interpolált sztring átalakítása változóvá IFormattable , amely lehetővé teszi, hogy több eredménysztringet hozzon létre kultúraspecifikus tartalommal egyetlen IFormattable példányból. Ez hasznos lehet például az egyes kultúrák megfelelő numerikus és dátumformátumainak beiktatásához. A kettős kapcsos zárójelek ("{{" és "}}") minden előfordulása dupla kapcsos zárójelként marad, amíg a metódus explicit vagy implicit meghívásával meg nem formázza a ToString() sztringet. A rendszer az összes tartalmazott interpolációs kifejezést átalakítja {0}, {1}és így tovább.
Az alábbi példa tükröződéssel jeleníti meg egy interpolált sztringből létrehozott változó tagjait, valamint mező- és tulajdonságértékeit IFormattable . A változót a IFormattable metódusnak Console.WriteLine(String) is átadja.
Imports System.Globalization Imports System.Reflection Public Module Example Public Sub Main() Dim price = 1000 Dim s2 As IFormattable = $"The cost of this item is {price:C}." ShowInfo(s2) CultureInfo.CurrentCulture = New CultureInfo("en-US") Console.WriteLine(s2) CultureInfo.CurrentCulture = New CultureInfo("fr-FR") Console.WriteLine(s2) End Sub Private Sub ShowInfo(obj As Object) Console.WriteLine($"Displaying member information:{vbCrLf}") Dim t = obj.GetType() Dim flags = BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.Static Or BindingFlags.NonPublic For Each m In t.GetMembers(flags) Console.Write($" {m.Name} {m.MemberType}") If m.MemberType = MemberTypes.Property Then Dim p = t.GetProperty(m.Name, flags) Console.Write($" Value: {p.GetValue(obj)}") End If If m.MemberType = MemberTypes.Field Then Dim f = t.GetField(m.Name, flags) Console.Write($" Value: {f.GetValue(obj)}") End If Console.WriteLine() Next Console.WriteLine($"-------{vbCrLf}") End Sub End Module ' The example displays the following output: Displaying member information: ' get_Format Method ' GetArguments Method ' get_ArgumentCount Method ' GetArgument Method ' ToString Method ' System.IFormattable.ToString Method ' ToString Method ' Equals Method ' GetHashCode Method ' GetType Method ' Finalize Method ' MemberwiseClone Method ' .ctor Constructor ' Format Property Value: The cost of this item is {0:C}. ' ArgumentCount Property Value: 1 ' _format Field Value: The cost of this item is {0:C}. ' _arguments Field Value: System.Object[] ' ------- ' ' The cost of this item is $1,000.00. ' The cost of this item is 1 000,00 €. ' </Snippet1>
Vegye figyelembe, hogy az interpolált sztring csak tükröződés használatával vizsgálható meg. Ha egy sztringformázási metódusnak továbbítja, például WriteLine(String)a formátumelemek feloldódnak, és az eredménysztring vissza lesz adva.
Interpolált sztring átalakítása összetett formátumú sztringet FormattableString képviselő változóvá. Az összetett formátumú sztring vizsgálata és annak eredménysztringként való megjelenítése segíthet például abban, hogy védelmet nyújtsunk egy injektálási támadással szemben, ha lekérdezést készít. A FormattableString következőkre is vonatkozik:
Túlterhelés ToString() , amely eredménysztringet hoz létre a CurrentCulture.
Egy Invariant metódus, amely sztringet hoz létre a InvariantCulture.
Egy ToString(IFormatProvider) metódus, amely eredménysztringet hoz létre egy adott kultúrához.
A dupla kapcsos zárójelek ("{{" és "}}") minden előfordulása dupla kapcsos zárójelként marad, amíg meg nem formázza. A rendszer az összes tartalmazott interpolációs kifejezést átalakítja {0}, {1}és így tovább.
Imports System.Globalization Public Module Example Public Sub Main() Dim name = "Bartholomew" Dim s3 As FormattableString = $"Hello, {name}!" Console.WriteLine($"String: '{s3.Format}'") Console.WriteLine($"Arguments: {s3.ArgumentCount}") Console.WriteLine($"Result string: {s3}") End Sub End Module ' The example displays the following output: ' String: 'Hello, {0}!' ' Arguments: 1 ' Result string: Hello, Bartholomew!
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: