Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Interpolierte Zeichenfolgen sind Zeichenfolgen , mit denen Sie F#-Ausdrücke in sie einbetten können. Sie sind in einer Vielzahl von Szenarien hilfreich, in denen sich der Wert einer Zeichenfolge basierend auf dem Ergebnis eines Werts oder Ausdrucks ändern kann.
Syntax
$"string-text {expr}"
$"string-text %format-specifier{expr}"
$"""string-text {"embedded string literal"}"""
$$"""string-text %%format-specifier{{expr}}"""
Bemerkungen
Interpolierte Zeichenfolgen ermöglichen ihnen das Schreiben von Code in "Löchern" innerhalb eines Zeichenfolgenliterals. Hier ist ein einfaches Beispiel:
let name = "Phillip"
let age = 30
printfn $"Name: {name}, Age: {age}"
printfn $"I think {3.0 + 0.14} is close to {System.Math.PI}!"
Der Inhalt zwischen jedem {}
geschweiften Paar kann ein beliebiger F#-Ausdruck sein.
Um einem {}
geschweiften Paar zu entkommen, schreiben Sie zwei davon wie folgt:
let str = $"A pair of braces: {{}}"
// "A pair of braces: {}"
Interpolierte Zeichenfolgen eingegeben
Interpolierte Zeichenfolgen können auch F#-Formatbezeichner aufweisen, um die Typsicherheit zu erzwingen.
let name = "Phillip"
let age = 30
printfn $"Name: %s{name}, Age: %d{age}"
// Error: type mismatch
printfn $"Name: %s{age}, Age: %d{name}"
Im vorherigen Beispiel übergibt der Code versehentlich den age
Wert, wo name
er sein soll, und umgekehrt. Da die interpolierten Zeichenfolgen Formatbezeichner verwenden, ist dies ein Kompilierungsfehler anstelle eines subtilen Laufzeitfehlers.
Verbatim interpolierte Zeichenfolgen
F# unterstützt interpolierte Zeichenfolgen mit dreifachen Anführungszeichen, sodass Sie Zeichenfolgenliterale einbetten können.
let age = 30
printfn $"""Name: {"Phillip"}, Age: %d{age}"""
Formatbezeichner
Formatbezeichner können entweder printf-formatieren oder . NET-Formatvorlage. Printf-Style-Bezeichner sind diejenigen, die in der Nur-Text-Formatierung behandelt werden, die vor den geschweiften Klammern platziert werden. Beispiel:
let pi = $"%0.3f{System.Math.PI}" // "3.142"
let code = $"0x%08x{43962}" // "0x0000abba"
Der Formatbezeichner %A
eignet sich besonders für die Erstellung der Diagnoseausgabe strukturierter F#-Daten.
let data = [0..4]
let output = $"The data is %A{data}" // "The data is [0; 1; 2; 3; 4]"
. Net-Style-Bezeichner sind diejenigen, die verwendet String.Formatwerden können, die nach einer :
innerhalb der geschweiften Klammern platziert werden. Beispiel:
let pi = $"{System.Math.PI:N4}" // "3.1416"
let now = $"{System.DateTime.UtcNow:``yyyyMMdd``}" // for example, "20220210"
Wenn ein . Der BEzeichner im NET-Stil enthält ein ungewöhnliches Zeichen und kann dann mithilfe von Double-Backticks escaped werden:
let nowDashes = $"{System.DateTime.UtcNow:``yyyy-MM-dd``}" // for example, "2022-02-10"
Ausrichten von Ausdrücken in interpolierten Zeichenfolgen
Sie können Ausdrücke innerhalb interpolierter Zeichenfolgen |
linksbündig oder rechtsbündig ausrichten und angeben, wie viele Leerzeichen vorhanden sind. Die folgende interpolierte Zeichenfolge richtet die linken und rechten Ausdrücke links bzw. rechts um sieben Leerzeichen aus.
printfn $"""|{"Left",-7}|{"Right",7}|"""
// |Left | Right|
Interpolierte Zeichenfolgen und FormattableString
Formatierungen
Sie können auch Formatierungen anwenden, die den Regeln entsprechen:FormattableString
let speedOfLight = 299792.458
printfn $"The speed of light is {speedOfLight:N3} km/s."
// "The speed of light is 299,792.458 km/s."
Darüber hinaus kann eine interpolierte Zeichenfolge auch über FormattableString eine Typanmerkung überprüft werden:
let frmtStr = $"The speed of light is {speedOfLight:N3} km/s." : FormattableString
// Type: FormattableString
// The speed of light is 299,792.458 km/s.
Beachten Sie, dass sich die Typanmerkung im interpolierten Zeichenfolgenausdruck selbst enthalten muss. F# konvertiert keine interpolierte Zeichenfolge implizit in eine FormattableString.
Erweiterte Syntax für die Zeichenfolgeninterpolation
Ab F# 8 können Sie beim Arbeiten mit Text, der mehrere {
Zeichen enthält, }
bereits %
erweiterte Zeichenfolgeninterpolationssyntax verwenden, um die Notwendigkeit der Escapefunktion zu entfernen.
Dreifache Anführungszeichenzeichenfolgenliterale können mit mehreren $
Zeichen beginnen, wodurch geändert wird, wie viele geschweifte Klammern zum Öffnen und Schließen der Interpolation erforderlich sind.
In diesen Zeichenfolgenliteralen {
}
müssen keine Escapezeichen verwendet werden:
let str = $$"""A string containing some {curly braces} and an {{"F#" + " " + "expression"}}."""
// "A string containing some {curly braces} and an F# expression."
let another = $$$"""A string with pairs of {{ and }} characters and {{{ "an F# expression" }}}."""
// "A string with pairs of {{ and }} characters and an F# expression."""
Die Anzahl der zeichen, die %
für Formatbezeichner erforderlich sind, ist auf die gleiche Weise betroffen:
let percent = $$"""50% of 20 is %%.1f{{20m * 0.5m}}"""
// "50% of 20 is 10.0"