Ciągi (F#)
string Typu reprezentuje niezmienne tekst jako sekwencję znaków Unicode .stringjest alias dla String w.NET Framework.
Uwagi
Literały ciągów znaków są rozdzielane przez znak cudzysłowu (").Znak odwróconej kreski ułamkowej (\) jest używany do kodowania niektórych znaków specjalnych.Kreska ułamkowa odwrócona i następny znak razem są znane jako sekwencja ucieczki.Escape sekwencji obsługiwane w ciągu F#, literały są przedstawione w poniższej tabeli.
Znak |
Sekwencja unikowa |
---|---|
BACKSPACE |
\b |
Nowy wiersz |
\n |
Powrót karetki |
\r |
Tab |
\t |
Kreska ułamkowa odwrócona |
\\ |
Cudzysłów |
\" |
Apostrof |
\' |
Znak Unicode |
\uXXXX lub \UXXXXXXXX (gdzie x wskazuje cyfra szesnastkowa) |
Jeśli poprzedzone symbolem @ literał jest ciąg verbatim.Oznacza to, że wszelkie sekwencje unikowe są ignorowane, z wyjątkiem, że dwa znaki cudzysłowu są interpretowane jako jeden cudzysłów.
Dodatkowo ciąg może być ujęta w potrójny ofert.W tym przypadku wszystkie sekwencje unikowe są ignorowane, włącznie ze znakami cudzysłowu.Aby określić ciąg, który zawiera osadzony jako ciąg, albo można użyć ciąg verbatim lub ciąg notowane trzykrotnie.Jeśli używany jest ciąg verbatim, należy określić dwa znaki cudzysłowu do wskazuje znak pojedynczego cudzysłowu.Jeśli używasz ciąg notowane trzykrotnie, można użyć znaki pojedynczego cudzysłowu bez nich przeanalizowany jako koniec ciągu.Technika ta może być przydatne podczas pracy z XML lub innych struktur, które zawierają osadzone cudzysłowy.
// Using a verbatim string
let xmlFragment1 = @"<book author=""Milton, John"" title=""Paradise Lost"">"
// Using a triple-quoted string
let xmlFragment2 = """<book author="Milton, John" title="Paradise Lost">"""
W kodzie ciągów podziały wierszy, które są akceptowane i podziały są dosłownie interpretowane jako newlines, chyba że znak odwróconej kreski ułamkowej jest ostatni znak przed podział wiersza.Światło wiodące w następnym wierszu jest ignorowane, gdy jest używany znak odwróconej kreski ułamkowej.Poniższy kod generuje ciąg str1 , ma wartość "abc\n def" i ciąg str2 , ma wartość "abcdef".
let str1 = "abc
def"
let str2 = "abc\
def"
Można uzyskać dostęp do poszczególnych znaków w ciągu przy użyciu składni podobne tablicy w następujący sposób.
printfn "%c" str1.[1]
Dane wyjściowe są b.
Lub można wyodrębnić podciągów przy użyciu składni plasterka array, jak pokazano w poniższym kodzie.
printfn "%s" (str1.[0..2])
printfn "%s" (str2.[3..5])
Wprowadza dane wyjściowe.
abc
def
Ciągi ASCII może reprezentować przez tablice bajtów bez znaku, typ byte[].Dodać sufiks B na ciąg literału wskazują, że jest to ciąg znaków ASCII.Literały ciągu znaków ASCII, używany z tablicami bajt obsługi tej samej sekwencji unikowych jako ciągi znaków Unicode , z wyjątkiem dla sekwencje escape Unicode .
// "abc" interpreted as a Unicode string.
let str1 : string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray : byte[] = "abc"B
Ciąg operatorów
Istnieją dwa sposoby łączyć ciągów: za pomocą + operator lub za pomocą ^ operator. + operator zachowuje zgodność z.NET ciąg Framework obsługi funkcji.
Poniższy przykład ilustruje konkatenacji ciągów.
let string1 = "Hello, " + "world"
Klasa String
Ponieważ typu string F# jest faktycznie.NET Framework String wpisz wszystkie String członkowie są dostępne. Obejmuje to + operator, który jest używany do łączyć ciągów, Length właściwośćoraz Chars właściwość, która zwraca ciąg jako tablica znaków Unicode . Aby uzyskać więcej informacji na temat ciągów, zobacz String.
Za pomocą Chars właściwość String, pojedynczych znaków w ciągu można uzyskać dostęp, podając indeks, jak to pokazano w poniższym kodzie.
let printChar (str : string) (index : int) =
printfn "First character: %c" (str.Chars(index))
Moduł ciąg
Dodatkowe funkcje obsługi ciągu znajduje się w String moduł w FSharp.Core przestrzeń nazw. Aby uzyskać więcej informacji, zobacz Core.String — Moduł (F#).