F#字符串

2018-12-15 11:08 更新

在F#中,string類(lèi)型表示不可變文本的Unicode字符序列。

字符串常量

字符串文本由引號(hào)(“)字符分隔。

一些特殊字符有特殊用途,如換行符,制表符等。它們使用反斜杠(\)字符編碼。 反斜杠字符和相關(guān)字符構(gòu)成轉(zhuǎn)義序列。 下表顯示了F#支持的轉(zhuǎn)義序列。

字符轉(zhuǎn)義序列
Backspace
Newline\n
Carriage return\r
Tab\t
Backslash\\
Quotation mark\"
Apostrophe\'
Unicode character\uXXXX or \UXXXXXXXX (where X indicates a hexadecimal digit)

忽略轉(zhuǎn)義序列的方法

以下兩種方式使編譯器忽略轉(zhuǎn)義序列

  • 使用@符號(hào)。
  • 將字符串括在三重引號(hào)中。

當(dāng)字符串字符在@符號(hào)前面時(shí),它被稱(chēng)為averbatim字符串。這樣,字符串中的所有轉(zhuǎn)義序列都被忽略,除了兩個(gè)引號(hào)標(biāo)記字符被解釋為一個(gè)引號(hào)標(biāo)記字符。

當(dāng)字符串由三重引號(hào)括起時(shí),則所有轉(zhuǎn)義序列也將被忽略,包括雙引號(hào)字符。

以下示例演示了如何使用XML或其他包含嵌入引號(hào)的結(jié)構(gòu)

// Using a verbatim string
let xmldata = @"<book author=""Lewis, C.S"" title=""Narnia"">"
printfn "%s" xmldata

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

<book author="Lewis, C.S" title="Narnia">

字符串基本操作符

下表顯示了字符串的基本操作

描述
collect : (char → string) → string → string創(chuàng)建一個(gè)新的字符串,其字符是應(yīng)用特定的功能到每個(gè)輸入字符串的字符的并且鏈接該產(chǎn)生的串的結(jié)果。
concat : string → seq<string> → string返回與分隔的串聯(lián)給出的字符串做了一個(gè)新的字符串。
exists : (char → bool) → string → bool如果字符串的任何字符滿(mǎn)足給定謂詞測(cè)試。
forall : (char → bool) → string → bool如果測(cè)試字符串中的所有字符滿(mǎn)足給定謂詞。
init : int → (int → string) → string創(chuàng)建一個(gè)新的字符串,其字符是應(yīng)用特定的功能到每個(gè)索引和連接生成的字符串的結(jié)果。
iter : (char → unit) → string → unit通過(guò)使用指定的函數(shù)在字符串中的每個(gè)字符。
iteri : (int → char → unit) → string → unit通過(guò)使用指定的功能的字符串中的每個(gè)字符和字符本身的索引。
length : string → int返回字符串的長(zhǎng)度。
map : (char → char) → string → string創(chuàng)建一個(gè)新的字符串,其字符是應(yīng)用特定的功能到每個(gè)輸入字符串的字符的結(jié)果。
mapi : (int → char → char) → string → string創(chuàng)建一個(gè)新的字符串,其字符是施加指定的函數(shù)來(lái)輸入字符串的每個(gè)字符和索引的結(jié)果。
replicate : int → string → string通過(guò)串聯(lián)串的實(shí)例中指定數(shù)量返回一個(gè)字符串。

下面的例子演示了上述一些功能的使用 -

例1

所述String.collect功能構(gòu)建一個(gè)新的字符串,其字符是應(yīng)用特定的功能到每個(gè)輸入字符串的字符的并且鏈接該產(chǎn)生的串的結(jié)果。

let collectTesting inputS =
   String.collect (fun c -> sprintf "%c " c) inputS
printfn "%s" (collectTesting "Happy New Year!")

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

H a p p y N e w Y e a r !

例2

該String.concat函數(shù)將一個(gè)字符串分隔一個(gè)給定的序列,并返回一個(gè)新字符串。

let strings = [ "Tutorials Point"; "Coding Ground"; "Absolute Classes" ]
let ourProducts = String.concat "
" strings
printfn "%s" ourProducts

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

Tutorials Point
Coding Ground
Absolute Classes

例3

該String.replicate方法通過(guò)串聯(lián)串的實(shí)例中指定數(shù)量返回一個(gè)字符串。

printfn "%s" <| String.replicate 10 "*! "

當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

*! *! *! *! *! *! *! *! *! *!
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)