此 string 類型表示不可變的文字做為 Unicode 字元序列。
string 是 System.String 在 .NET 中的別名。
備註
字串常值是以引號 (“) 字元分隔。 反斜杠字元 ( \ ) 是用來編碼特定特殊字元。 反斜杠和下一個字元一起稱為 逸出序列。 下表顯示 F# 字串常值中支援的逸出序列。
| 角色 | 逸出序列 |
|---|---|
| 警報 | \a |
| 退格鍵 | \b |
| 表單摘要 | \f |
| 換行符 | \n |
| 回車鍵 | \r |
| Tab鍵 | \t |
| 垂直索引標籤 | \v |
| 反斜線 | \\ |
| 引號 | \" |
| 單引號 | \' |
| Unicode 字元 |
\DDD (其中 D 表示十進制數;範圍 000 - 255;例如, \231 = “ç”) |
| Unicode 字元 |
\xHH (其中 H 表示十六進位數位;範圍 00 - FF;例如, \xE7 = “ç”) |
| Unicode 字元 |
\uHHHH (UTF-16)(其中 H 表示十六進位數位;範圍為 0000 - FFFF;例如, \u00E7 = “ç”) |
| Unicode 字元 |
\U00HHHHHH (UTF-32)(其中 H 表示十六進位數位;範圍 000000 - 10FFFF;例如= \U0001F47D “👽”) |
這很重要
逸 \DDD 出序列是十進位表示法,而不是八進位表示法,就像大多數其他語言一樣。 因此,數位 8 和 9 有效,且 的序列 \032 代表空格 (U+0020),而八進位表示法中的相同程式代碼點會是 \040。
備註
受限於範圍 0 - 255 (0xFF), \DDD 和 \x 逸出序列實際上是 ISO-8859-1 字元集,因為這符合前 256 個 Unicode 字碼點。
逐字字串
如果前面加上 @ 符號,則常值是逐字字串。 宣告逐字字串表示會忽略任何逸出序列,但兩個引號字元會解譯為一個引號字元。
三引號字串
此外,字串可能會以三引弧括住。 在此情況下,會忽略所有逸出序列,包括雙引號字元。 若要指定包含內嵌引號字串的字串,您可以使用逐字字串或三引號字串。 如果您使用逐字字串,則必須指定兩個引號字元來表示單引號字元。 如果您使用三引號字串,則可以使用單引號字元,而不會將它們剖析為字串的結尾。 當您使用包含內嵌引號的 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\ndef"字串str1,以及具有 值的"abcdef"字串str2。
let str1 =
"abc
def"
let str2 =
"abc\
def"
字串索引編製和配量
您可以使用類似數位的語法來存取字串中的個別字元。 下列範例會使用 [] 來編製字串的索引。 此語法是在 F# 6.0 中引進的。 您也可以使用 .[] 來編制所有版本中的字串索引。 慣用新的語法。
printfn "%c" str1[1]
輸出為 b。
或者,您可以使用陣列配量語法來擷取子字串,如下列程式代碼所示。
printfn "%s" str1[0..2]
printfn "%s" str2[3..5]
輸出如下。
abc
def
您可以依不帶正負號位元組的陣列來表示 ASCII 字串,請輸入 byte[]。 您會將後綴 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"
String 類別
因為 F# 中的字串類型實際上是 .NET Framework System.String 類型,因此所有 System.String 成員都可以使用。
System.String
+包含運算符,可用來串連字串、Length屬性和 Chars 屬性,以 Unicode 字元陣列的形式傳回字串。 如需字串的詳細資訊,請參閱 System.String。
藉由使用 Chars 的 System.String屬性,您可以藉由指定索引來存取字串中的個別字元,如下列程式代碼所示。
let printChar (str: string) (index: int) =
printfn "First character: %c" (str.Chars(index))
字串模組
字串處理的其他功能會包含在 String 命名空間的模組中 FSharp.Core 。 如需詳細資訊,請參閱 字串模組。