Sztringek
A string
típus a nem módosítható szöveget Unicode-karakterek sorozataként jelöli. string
a .NET aliasa System.String
.
Megjegyzések
A sztringkonstansokat az idézőjel (") karakter elválasztja. A fordított perjel karakter (\ ) bizonyos speciális karakterek kódolására szolgál. A fordított perjelet és a következő karaktert együtt menekülési sorozatnak nevezzük. Az F# sztringkonstansokban támogatott feloldósorozatok az alábbi táblázatban láthatók.
Karakter | Menekülési sorozat |
---|---|
Riasztás | \a |
Backspace | \b |
Űrlapcsatorna | \f |
Newline | \n |
Kocsivissza | \r |
Lap | \t |
Függőleges lap | \v |
Fordított perjel | \\ |
Idézőjel | \" |
Aposztróf | \' |
Unicode-karakter | \DDD (ahol D tizedesjegyet jelöl; tartománya 000 – 255; például \231 = "ç") |
Unicode-karakter | \xHH (ahol H hexadecimális számjegyet jelöl; tartománya 00 - FF; például \xE7 = "ç") |
Unicode-karakter | \uHHHH (UTF-16) (ahol H hexadecimális számjegyet jelöl; tartománya 0000 - FFFF; például \u00E7 = "ç") |
Unicode-karakter | \U00HHHHHH (UTF-32) (ahol H hexadecimális számjegyet jelöl; tartománya 0000000 - 10FFFF; például \U0001F47D = "👽") |
Fontos
A \DDD
feloldósorozat tizedesjel, nem oktális jelölés, mint a legtöbb más nyelven. Ezért a számjegyek 8
és 9
az érvényesek, valamint a szóközök sorozata \032
(U+0020), míg ugyanez a kódpont az oktális jelölésben .\040
Feljegyzés
Mivel 0 és 255 közötti tartományra van korlátozva (0xFF), a feloldó és \x
a \DDD
feloldó sorozat gyakorlatilag az ISO-8859-1 karakterkészlet, mivel ez megfelel az első 256 Unicode-kódpontnak.
Verbatim sztringek
Ha a @ szimbólum előtt a literál szó szerinti sztring. A szó szerinti sztring deklarálása azt jelenti, hogy a rendszer figyelmen kívül hagyja a feloldósorozatokat, azzal a kivétellel, hogy két idézőjel karaktert egyetlen idézőjel karakterként értelmez.
Három idézett sztring
Emellett egy sztringet három idézőjel is tartalmazhat. Ebben az esetben a rendszer figyelmen kívül hagyja az összes feloldósorozatot, beleértve a kettős idézőjelek karaktereit is. Beágyazott idézőjeles sztringet tartalmazó sztring megadásához használhat szó szerinti vagy három idézőjeles sztringet. Ha szó szerinti sztringet használ, két idézőjel karaktert kell megadnia, hogy egyetlen idézőjel karaktert jelöljön. Ha három idézőjeles sztringet használ, az idézőjelek karaktereit anélkül használhatja, hogy azok a sztring végének minősülnek. Ez a technika akkor lehet hasznos, ha beágyazott idézőjeleket tartalmazó XML- vagy más struktúrákkal dolgozik.
// 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">"""
A kódban a sortöréseket tartalmazó sztringek elfogadottak, a sortörések pedig a forrásban használt újvonalas kódolásként lesznek értelmezve, kivéve, ha a fordított perjel karakter az utolsó karakter a sortörés előtt. A következő sorban lévő kezdő szóköz figyelmen kívül lesz hagyva a fordított perjel karakter használatakor. Az alábbi kód egy értéket tartalmazó sztringet str1
és egy értéket "abcdef"
tartalmazó sztringet str2
hoz létre."abc\ndef"
let str1 =
"abc
def"
let str2 =
"abc\
def"
Sztringindexelés és szeletelés
A sztring egyes karaktereit tömbszerű szintaxissal érheti el. Az alábbi példák sztringek indexelésére használhatók []
. Ez a szintaxis az F# 6.0-ban lett bevezetve. A sztringek indexelésére is használható .[]
minden verzióban. Előnyben részesíti az új szintaxist.
printfn "%c" str1[1]
A kimenet a következő: b
.
Az alsztringeket a tömbszelet szintaxisával is kinyerheti, ahogyan az az alábbi kódban is látható.
printfn "%s" str1[0..2]
printfn "%s" str2[3..5]
A kimenet a következő.
abc
def
AsCII-sztringeket jelölhet aláíratlan bájtok tömbje alapján, írja be a következőt byte[]
: . Adja hozzá az utótagot B
egy sztringkonstanshoz, amely azt jelzi, hogy az ASCII-sztring. A bájttömbökkel használt ASCII-sztringkonstansok ugyanazokat a feloldósorozatokat támogatják, mint a Unicode-sztringek, kivéve a Unicode-feloldási sorozatokat.
// "abc" interpreted as a Unicode string.
let str1: string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray: byte[] = "abc"B
Sztring operátorok
Az +
operátor sztringek összefűzésére használható, így a .NET-keretrendszer sztringkezelési funkciókkal való kompatibilitás megmarad. Az alábbi példa a sztringösszefűzést szemlélteti.
let string1 = "Hello, " + "world"
Sztringosztály
Mivel az F# sztringtípusa valójában .NET-keretrendszer System.String
típus, az System.String
összes tag elérhető. System.String
Tartalmazza a +
karakterláncok összefűzésére használt operátort, a Length
tulajdonságot és a Chars
tulajdonságot, amely Unicode-karakterek tömbjeként adja vissza a sztringet. További információ a sztringekről: System.String
.
A tulajdonság System.String
használatával Chars
egy index megadásával érheti el a sztring egyes karaktereit, ahogyan az az alábbi kódban is látható.
let printChar (str: string) (index: int) =
printfn "First character: %c" (str.Chars(index))
Sztringmodul
A sztringkezelés további funkcióit a String
névtér modulja FSharp.Core
tartalmazza. További információ: Sztringmodul.