F#字符串

2018-12-15 11:08 更新

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

字符串常量

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

一些特殊字符有特殊用途,如換行符,制表符等。它們使用反斜杠(\)字符編碼。 反斜杠字符和相關(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)義序列

  • 使用@符號。
  • 將字符串括在三重引號中。

當字符串字符在@符號前面時,它被稱為averbatim字符串。這樣,字符串中的所有轉(zhuǎn)義序列都被忽略,除了兩個引號標記字符被解釋為一個引號標記字符。

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

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

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

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

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

字符串基本操作符

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

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

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

例1

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

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

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

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

例2

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

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

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

Tutorials Point
Coding Ground
Absolute Classes

例3

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號