Ř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.String
můž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.