共用方式為


字串 (F#)

string 型別以一連串的 Unicode 字元表示不可變文字。 string 是 .NET Framework 中 String 的別名。

備註

字串常值是以引號 (") 字元分隔。 反斜線字元 (\) 是用來括住某些特殊字元。 反斜線和下一個字元統稱為「逸出序列」(Escape Sequence)。 下表說明 F# 字串常值支援的逸出序列。

字元

逸出序列

退格鍵

\b

新行字元

\n

歸位字元

\r

Tab

\t

反斜線

\\

引號

\"

所有格符號

\'

Unicode 字元

\uXXXX 或 \UXXXXXXXX (其中 X 表示十六進位數字)

如果前面有 @ 符號,則常值是逐字字串。 這表示會略過任何逸出序列,差異在於兩個引號字元會解譯為一個引號字元。

此外,可能會以三重引號括住字串。 在這個大小寫中,會忽略所有的逸出序列,包括雙引號字元。 若要指定字串,其中包含內嵌引號的字串,您可以使用逐字翻譯字串或三重引號的字串。 如果您使用逐字翻譯字串時,您必須指定兩個引號字元來表示單一引號字元。 如果您使用三重引號的字串,您可以使用單引號字元沒有它們剖析為字串的結尾。 當您使用XML或其他包含內嵌的引號的結構,這項技術可以很有用。

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

在程式碼中,除非反斜線字元是分行符號前的最後一個字元,否則會接受具有分行符號的字串,並且逐一將分行符號解譯為新行字元。 使用反斜線字元時,會忽略下一行的前置空白。 下列程式碼會產生值為 "abc\n def" 的 str1 字串以及值為 "abcdef" 的 str2 字串。

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

您可以使用類似陣列的語法來存取字串中的個別字元,如下所示。

printfn "%c" str1.[1]

輸出為 b。

您也可以使用陣列切割語法來擷取子字串,如下列程式碼所示。

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

輸出如下。

abc
def

您可以透過不帶正負號位元組的陣列 (型別 byte[]) 來表示 ASCII 字串。 您可以將後置字元 B 加入至字串常值,表示這是 ASCII 字串。 搭配位元組陣列使用的 ASCII 字串常值和 Unicode 字串支援相同的逸出序列,但不包含 Unicode 逸出序列。

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

字串運算子

有兩種方式可以串連字串:使用 + 運算子或使用 ^ 運算子。 + 運算子與 .NET Framework 字串處理功能相容。

下列範例說明字串串連。

let string1 = "Hello, " + "world"

字串類別

F# 中的字串型別實際上是 .NET Framework String 型別,因此可以使用所有 String 成員。 這包括 + 運算子 (用於串連字串)、Length 屬性和 Chars 屬性 (傳回字串做為 Unicode 字元陣列)。 如需字串的詳細資訊,請參閱 String

使用 String 的 Chars 屬性,就可以指定索引來存取字串中的個別字元,如下列程式碼所示。

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

字串模組

其他字串處理功能包含於 FSharp.Core 命名空間的 String 模組中。 如需詳細資訊,請參閱 Core.String 模組 (F#)

請參閱

參考

String

其他資源

F# 語言參考