Řetězce

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

Poznámky

Řetězcové literály jsou oddělené znakem uvozovky ("). 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 se označují jako řídicí sekvence. Řídicí sekvence podporované v řetězcovýchliterch

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

Důležité

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

Poznámka:

Omezení rozsahu 0 až 255 (0xFF) \DDD jsou \x řídicí sekvence efektivně znakovou sadou ISO-8859-1 , protože odpovídá prvním 256 bodům kódu Unicode.

Doslovné řetězce

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

Triple Quoted Strings

Řetězec může být navíc uzavřený trojitými uvozovkami. V tomto případě se všechny řídicí sekvence ignorují, včetně uvozovek. Pokud chcete zadat řetězec, který obsahuje vložený řetězec v uvozováku, můžete buď použít doslovný řetězec, nebo řetězec s trojitým uvozvozovým znakem. Pokud používáte doslovný řetězec, musíte zadat dva znaky uvozovek, které označují jeden znak uvozovek. Pokud použijete řetězec s trojitými uvozovkami, můžete použít jednoduché uvozovky, aniž by se parsovaly 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 řetězce s koncem řádku přijímány a konce řádků jsou interpretovány jako kódování nového řádku použité ve zdroji, pokud znak zpětného lomítka není posledním znakem před koncem řádku. Počáteční prázdné znaky na dalším řádku se při použití zpětného lomítka ignorují. Následující kód vytvoří řetězec str1 , který má hodnotu "abc\ndef" a řetězec str2 , který má hodnotu "abcdef".

let str1 =
    "abc
def"

let str2 =
    "abc\
def"

Indexování řetězců a vytváření řezů

K jednotlivým znakům v řetězci můžete přistupovat pomocí syntaxe podobné poli. Následující příklady se používají [] k indexování řetězců. Tato syntaxe byla zavedena v jazyce F# 6.0. Můžete také použít .[] k indexování řetězců ve všech verzích. Nová syntaxe je upřednostňovaná.

printfn "%c" str1[1]

Výstup je b.

Nebo můžete extrahovat podřetětěc 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 lze znázornit podle polí bez znaménka bajtů, typ byte[]. K řetězcovém literálu přidáte příponu B , která označuje, že se jedná o řetězec ASCII. Řetězcové literály ASCII používané s bajtovými poli 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ězení řetězců a zachování kompatibility s funkcemi zpracování řetězců rozhraní .NET Framework. 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 jazyce F# je ve skutečnosti typ rozhraní .NET Framework System.String , jsou k dispozici všechny System.String členy. System.String+ obsahuje operátor, který slouží ke zřetězení řetězců, Length vlastnosti a Chars vlastnosti, která vrací řetězec jako pole znaků Unicode. Další informace o řetězcích naleznete v tématu System.String.

Chars Pomocí vlastnosti System.Stringmůžete získat přístup k jednotlivým znakům v řetězci zadáním indexu, jak 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 String

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

Viz také