当前位置: 首页 > 文档资料 > F# 中文教程 >

Strings

优质
小牛编辑
129浏览
2023-12-01

在F#中,字符串类型将不可变文本表示为Unicode字符序列。

字符串常量 (String Literals)

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

一些特殊字符用于特殊用途,如换行符,制表符等。它们使用反斜杠(\)字符进行编码。 反斜杠字符和相关字符构成转义序列。 下表显示了F#支持的转义序列。

字符逃脱序列
Backspace\b
Newline\n
Carriage return\r
Tab\t
Backslash\\
Quotation mark\"
Apostrophe\'
Unicode character\uXXXX或\ UXXXXXXXX(其中X表示十六进制数字)

审视逃逸序列的方法

以下两种方法使编译器忽略转义序列 -

  • 使用@符号。
  • 用三重引号括起字符串。

当字符串文字前面有@符号时,它被称为verbatim string. 这样,除了两个引号字符被解释为一个引号字符外,字符串中的所有转义序列都被忽略。

当字符串被三引号括起来时,也会忽略所有转义序列,包括双引号字符。

例子 (Example)

以下示例演示了此技术,说明如何使用包含嵌入式引号的XML或其他结构 -

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

编译并执行程序时,它会产生以下输出 -

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

字符串的基本运算符

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

描述
collect:(char→string)→string→string创建一个新字符串,其字符是将指定函数应用于输入字符串的每个字符并连接结果字符串的结果。
concat:string→seq →string返回通过将给定字符串与分隔符连接而生成的新字符串。
存在:( char→bool)→string→bool测试字符串的任何字符是否满足给定的谓词。
forall :( char→bool)→string→bool测试字符串中的所有字符是否满足给定的谓词。
init:int→(int→string)→string创建一个新字符串,其字符是将指定函数应用于每个索引并连接结果字符串的结果。
iter :( char→unit)→string→unit将指定的函数应用于字符串中的每个字符。
iteri:(int→char→unit)→string→unit将指定的函数应用于字符串中每个字符的索引和字符本身。
length:string→int返回字符串的长度。
map:(char→char)→string→string创建一个新字符串,其字符是将指定函数应用于输入字符串的每个字符的结果。
mapi:(int→char→char)→string→string创建一个新字符串,其字符是将指定函数应用于输入字符串的每个字符和索引的结果。
replicate:int→string→string通过连接指定数量的字符串实例来返回字符串。

以下示例演示了上述某些功能的用途 -

例子1 (Example 1)

String.collect函数构建一个新字符串,其字符是将指定函数应用于输入字符串的每个字符并连接结果字符串的结果。

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

编译并执行程序时,它会产生以下输出 -

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

例子2 (Example 2)

String.concat函数将给定的字符串序列与分隔符连接起来并返回一个新字符串。

let strings = [ "IOWIKI"; "Coding Ground"; "Absolute Classes" ]
let ourProducts = String.concat "\n" strings
printfn "%s" ourProducts

编译并执行程序时,它会产生以下输出 -

IOWIKI
Coding Ground
Absolute Classes

例子3 (Example 3)

String.replicate方法通过连接指定数量的字符串实例来返回字符串。

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

编译并执行程序时,它会产生以下输出 -

*! *! *! *! *! *! *! *! *! *!