Dela via


Strängar

Typen string representerar oföränderlig text som en sekvens med Unicode-tecken. string är ett alias för System.String i .NET.

Kommentarer

Strängliteraler avgränsas med citattecknet ("). Omvänt snedstreck ( \ ) används för att koda vissa specialtecken. Omvänt snedstreck och nästa tecken tillsammans kallas för en escape-sekvens. Escape-sekvenser som stöds i F#-strängliteraler visas i följande tabell.

Tecken Escape-sekvens
Varning \a
Backsteg \b
Formulärfeed \f
Newline \n
Vagnretur \r
Flik \t
Lodrät flik \v
Omvänt snedstreck \\
Citattecken \"
Apostrof \'
Unicode-tecken \DDD (där D anger en decimalsiffra, intervallet 000–255, till exempel \231 = "ç")
Unicode-tecken \xHH (där H anger en hexadecimal siffra; intervallet 00 – FF, till exempel \xE7 = "ç")
Unicode-tecken \uHHHH (UTF-16) (där H anger en hexadecimal siffra; intervallet 0000 – FFFF; till exempel \u00E7 = "ç")
Unicode-tecken \U00HHHHHH (UTF-32) (där H anger en hexadecimal siffra; intervallet 000000–10FFFF, till exempel \U0001F47D = "👽")

Viktigt!

Escape-sekvensen \DDD är decimal notation, inte oktal notation som på de flesta andra språk. Därför är siffror 8 och 9 giltiga, och en sekvens med \032 representerar ett blanksteg (U+0020), medan samma kodpunkt i oktal notation skulle vara \040.

Kommentar

Eftersom de är begränsade till ett intervall på 0–255 (0xFF) \DDD är escape-sekvenserna i \x själva verket iso-8859-1-teckenuppsättningen , eftersom det matchar de första 256 Unicode-kodpunkterna.

Ordagranna strängar

Om det föregås av @-symbolen är literalen en ordagrann sträng. Att deklarera en ordagrann sträng innebär att alla escape-sekvenser ignoreras, förutom att två citattecken tolkas som ett citattecken.

Tre citatsträngar

Dessutom kan en sträng omges av tre citattecken. I det här fallet ignoreras alla escape-sekvenser, inklusive dubbla citattecken. Om du vill ange en sträng som innehåller en inbäddad citerad sträng kan du antingen använda en ordagrann sträng eller en trippel-citerad sträng. Om du använder en ordagrann sträng måste du ange två citattecken för att ange ett enkelt citattecken. Om du använder en trippelciterad sträng kan du använda enkla citattecken utan att de parsas som slutet av strängen. Den här tekniken kan vara användbar när du arbetar med XML eller andra strukturer som innehåller inbäddade citattecken.

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

I kod accepteras strängar som har radbrytningar och radbrytningarna tolkas som den nya linjekodning som används i källan, såvida inte ett omvänt snedstreck är det sista tecknet före radbrytningen. Inledande blanksteg på nästa rad ignoreras när omvänt snedstreck används. Följande kod genererar en sträng str1 som har ett värde "abc\ndef" och en sträng str2 som har värdet "abcdef".

let str1 =
    "abc
def"

let str2 =
    "abc\
def"

Strängindexering och segmentering

Du kan komma åt enskilda tecken i en sträng med hjälp av matrisliknande syntax. I följande exempel används [] för att indexeras strängar. Den här syntaxen introducerades i F# 6.0. Du kan också använda .[] för att indexeras strängar i alla versioner. Den nya syntaxen är att föredra.

printfn "%c" str1[1]

Utdata är b.

Eller så kan du extrahera delsträngar med hjälp av matrissektorsyntax, som du ser i följande kod.

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

Utdata är följande.

abc
def

Du kan representera ASCII-strängar efter matriser med osignerade byte. Skriv byte[]. Du lägger till suffixet B i en strängliteral för att indikera att det är en ASCII-sträng. ASCII-strängliteraler som används med bytematriser stöder samma escape-sekvenser som Unicode-strängar, förutom Unicode-escape-sekvenserna.

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

Strängoperatorer

Operatorn + kan användas för att sammanfoga strängar och upprätthålla kompatibilitet med .NET Framework-stränghanteringsfunktionerna. I följande exempel visas sammanlänkning av strängar.

let string1 = "Hello, " + "world"

Strängklass

Eftersom strängtypen i F# faktiskt är en .NET Framework-typ System.String är alla System.String medlemmar tillgängliga. System.String innehåller operatorn + , som används för att sammanfoga strängar, Length egenskapen och Chars egenskapen, som returnerar strängen som en matris med Unicode-tecken. Mer information om strängar finns i System.String.

Genom att använda Chars egenskapen System.Stringför kan du komma åt de enskilda tecknen i en sträng genom att ange ett index, som visas i följande kod.

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

Strängmodul

Ytterligare funktioner för stränghantering ingår i modulen String i FSharp.Core namnområdet. Mer information finns i Strängmodul.

Se även