Řetězce

Typ string představuje neměnný text jako sekvenci znaků Unicode. string je alias pro v System.String .NET.

Poznámky

Řetězcové literály jsou oddělené znakem uvozovek ("). Zpětné lomítko ( \ ) se používá ke kódování určitých speciálních znaků. Zpětné lomítko a další znak společně se označuje jako řídicí sekvence. Řídicí sekvence podporované v řetězcových literálech jazyka F# jsou uvedeny v následující tabulce.

Znak Řídicí sekvence
Výstrahy \a
Backspace \b
Informační kanál formuláře \f
Newline \n
Návrat na začátek řádku \r
Karta \t
Vertikální tabulátor \v
Zpětné lomítko \\
Uvozovky \"
Apostrof \'
znak Unicode \DDD (kde D označuje desítkovou číslici; rozsah 000–255; například \231 = "ç")
znak Unicode \xHH (kde H označuje šestnáctkové číslo; rozsah 00 – FF; například \xE7 = "ç")
znak Unicode \uHHHH (UTF-16) (kde H označuje šestnáctkové číslo; rozsah 0000 – FFFF; například \u00E7 = "ç")
znak Unicode \U00HHHHHH (UTF-32) (kde H označuje šestnáctkový číslice; rozsah 000000– 10FFFF; například \U0001F47D = " 👽 ")

Důležité

Řídicí \DDD sekvence je desítkový zápis, nikoli osmičkové notace jako ve většině ostatních jazyků. Proto jsou číslice a platné a sekvence představuje mezeru 8 9 \032 (U+0020), zatímco stejný bod kódu v osmičkovém notaci by byl \040 .

Poznámka

Vzhledem k tomu, že řídicí sekvence a jsou omezené na rozsah 0 až 255 (0xFF), jsou ve podstatě znakovou sadu \DDD \x ISO-8859-1, protože ta odpovídá prvních 256 bodům kódu Unicode.

Doslovné řetězce

Pokud předchází symbol @, literál je doslovný řetězec. To znamená, že všechny řídicí sekvence jsou ignorovány s tím rozdílem, že dva znaky uvozovek jsou interpretovány jako jeden znak uvozovek.

Třikrát uvozené řetězce

Kromě toho může být řetězec uzavřený v trojitých uvozovkách. V tomto případě se všechny řídicí sekvence ignorují, včetně dvojitých uvozovek. Pokud chcete zadat řetězec, který obsahuje řetězec vložených v uvozovek, můžete použít doslovný řetězec nebo řetězec v uvozovek. Pokud použijete doslovný řetězec, musíte zadat dva znaky uvozovek, které označují znak jednoduché uvozovky. Pokud použijete řetězec s trojitou uvozovkou, můžete použít jednoduché uvozovky, aniž by byly analyzovány jako konec řetězce. Tato technika může být užitečná při práci s XML nebo jinými strukturami, které obsahují vložené uvozovky.

// 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">"""

V kódu jsou přijaty řetězce, které mají konce řádků, a konce řádků jsou interpretovány doslova jako nové řádky, pokud zpětné lomítko není posledním znakem před konec řádku. Počáteční prázdné znaky na dalším řádku se při použití znaku zpětného lomítka ignorují. Následující kód vytvoří řetězec, str1 který má hodnotu , a řetězec s "abc\ndef" str2 hodnotou "abcdef" .

let str1 = "abc
def"
let str2 = "abc\
def"

Indexování a slicing řetězců

K jednotlivým znakům v řetězci můžete přistupovat následujícím způsobem pomocí syntaxe typu pole.

printfn "%c" str1.[1]

Výstup je b.

Nebo můžete extrahovat podřetězce pomocí syntaxe řezu pole, jak je znázorněno v následujícím kódu.

printfn "%s" (str1.[0..2])
printfn "%s" (str2.[3..5])

Výstup je následující.

abc
def

Řetězce ASCII můžete reprezentovat podle polí bajtů bez znaménka, zadejte byte[] . Přidáním přípony do B řetězcového literálu označíte, že se jedná o řetězec ASCII. Řetězcové literály ASCII používané s poli bajtů podporují stejné řídicí sekvence jako řetězce Unicode, s výjimkou řídicích sekvencí Unicode.

// "abc" interpreted as a Unicode string.
let str1 : string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray : byte[] = "abc"B

Operátory řetězce

Operátor + lze použít ke zřetězování řetězců a zachování kompatibility s .NET Framework funkcemi zpracování řetězců. Následující příklad znázorňuje zřetězení řetězců.

let string1 = "Hello, " + "world"

String – třída

Vzhledem k tomu, že typ řetězce v F# je .NET Framework typu, jsou k dispozici System.String System.String všechny členy. To zahrnuje operátor , který se používá ke zřetězování řetězců, vlastnosti a vlastnosti , která vrací řetězec jako pole + Length znaků Chars Unicode. Další informace o řetězcích najdete v tématu System.String .

Pomocí vlastnosti můžete získat přístup k jednotlivým znakům v řetězci zadáním indexu, jak Chars System.String je znázorněno v následujícím kódu.

let printChar (str : string) (index : int) =
    printfn "First character: %c" (str.Chars(index))

Modul řetězce

Další funkce pro zpracování řetězců jsou součástí String modulu v oboru názvů FSharp.Core . Další informace najdete v tématu Modul řetězců.

Viz také