Zeichenfolgen (F#)
Der string stellt unveränderlichen Text als eine Reihe von Unicode-Zeichen dar. Der string-Typ ist ein Alias für String in .NET Framework.
Hinweise
Zeichenfolgenliterale werden durch das Anführungszeichen (") getrennt. Bestimmte Sonderzeichen werden mit dem umgekehrten Schrägstrich (\) codiert. Die Kombination von umgekehrtem Schrägstrich und nachfolgendem Zeichen wird als Escapesequenz bezeichnet. In der folgenden Tabelle werden die in F#-Zeichenfolgenliteralen unterstützten Escapesequenzen aufgeführt.
Zeichen |
Escapesequenz |
---|---|
Rückschritt |
\b |
Zeilenumbruch |
\n |
Wagenrücklauf |
\r |
Registerkarte |
\t |
Umgekehrter Schrägstrich |
\\ |
Anführungszeichen |
\" |
Apostroph |
\' |
Unicodezeichen |
\uXXXX oder \UXXXXXXXX (wobei X eine Hexadezimalziffer angibt) |
Wird das @-Zeichen vorangestellt, ist das Literal eine wörtliche Zeichenfolge. Dies bedeutet, dass alle Escapesequenzen ignoriert werden, nur zwei Anführungszeichen werden als ein Anführungszeichen interpretiert.
Zeichenfolgen im Code mit Zeilenumbruch werden akzeptiert, und die Zeilenumbrüche werden wörtlich als neue Zeilen interpretiert, sofern das letzte Zeichen vor dem Zeilenumbruch kein umgekehrter Schrägstrich ist. Führende Leerstellen auf der nächsten Zeile werden ignoriert, wenn der umgekehrte Schrägstrich verwendet wird. Der folgende Code erstellt eine str1-Zeichenfolge mit dem "abc\r\n def"-Wert und eine str2-Zeichenfolge mit dem "abcdef"-Wert.
let str1 = "abc
def"
let str2 = "abc\
def"
Beim Arbeiten mit Zeichenfolgen, behält F# die Zeilenumbruchzeichen so bei, wie sie gefunden werden, sodass sie beibehalten werden, ob Sie nun eine Zeichenfolge aus einer Datei mit Zeilenvorschub (LF oder \n) oder Wagenrücklauf und Zeilenvorschub (CRLF oder \r\n) als Zeilenumbruchzeichen lesen.
Für den Zugriff auf einzelne Zeichen in einer Zeichenfolge kann die folgende arrayähnliche Syntax verwendet werden.
printfn "%c" str1.[1]
Die Ausgabe lautet b.
Stattdessen können auch Teilzeichenfolgen mit der Array-Slice-Syntax, wie im folgenden Code gezeigt, extrahiert werden.
printfn "%s" (str1.[0..2])
printfn "%s" (str2.[3..5])
Die Ausgabe lautet wie folgt.
abc
def
ASCII-Zeichenfolgen lassen sich durch Arrays von Bytes ohne Vorzeichen vom byte[]-Typ darstellen. Sie fügen einem Zeichenfolgenliteral das Suffix B hinzu, um anzugeben, dass es sich um eine ASCII-Zeichenfolge handelt. Mit Bytearrays verwendete ASCII-Zeichenfolgenliterale unterstützen die gleichen Escapesequenzen wie Unicode-Zeichenfolgen, mit Ausnahme der Unicode-Escapesequenzen.
// "abc" interpreted as a Unicode string.
let str1 : string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray : byte[] = "abc"B
Zeichenfolgenoperatoren
Es gibt zwei Möglichkeiten zur Verkettung von Zeichenfolgen: mit dem +- oder dem ^-Operator. Der +-Operator erhält die Kompatibilität mit den .NET Framework-Funktionen für die Zeichenfolgenbehandlung erhalten.
Im folgenden Beispiel wird die Zeichenfolgenverkettung veranschaulicht.
let string1 = "Hello, " + "world"
String-Klasse
Da der String-Typ in F# eigentlich ein .NET Framework-String-Typ ist, sind alle String-Member verfügbar. Dies gilt auch für den +-Operator, der zum Verketten von Zeichenfolgen verwendet wird, die Length- und die Chars-Eigenschaft, die die Zeichenfolge als Array von Unicode-Zeichen zurückgibt. Weitere Informationen über Zeichenfolgen finden Sie im String.
Mit der Chars-Eigenschaft von String können Sie auf die einzelnen Zeichen in einer Zeichenfolge durch das Angeben eines Indexes zugreifen, wie im folgenden Code gezeigt.
let printChar (str : string) (index : int) =
printfn "First character: %c" (str.Chars(index))
String-Modul
Das String-Modul im FSharp.Core-Namespace enthält zusätzliche Funktionen für die Zeichenfolgenbehandlung. Weitere Informationen finden Sie unter Core.String-Modul (F#).