F# - 字符串

F# - 字符串 首页 / F#入门教程 / F# - 字符串

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

字符串

字符串使用引号(")字符分隔,某些特殊字符用于特殊用途,如换行符,制表符等,它们使用反斜杠(\)字符进行编码,下表显示了F#支持的转义序列。

链接:https://www.learnfk.comhttps://www.learnfk.com/fsharp/fsharp-strings.html

来源:LearnFk无涯教程网

字符 转义序列
退格键 \b
换行 \n
返回 \r
Tab \t
反斜杠 \\
引号 \"
单引号 \'
Unicode字符 \uXXXX或\UXXXXXXXX(其中X表示十六进制数字)

忽略转义方法

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

无涯教程网

  • 使用@符号。
  • 将字符串用三引号引起来。

当字符串文字的前面带有@符号时,它称为 verbatim字符串。

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

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

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

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

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

基本运算符

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

Value 描述
collect : (char → string) → string → string 创建一个新字符串,该字符串的字符是对输入字符串的每个字符应用指定功能并将其串联后的结果。
concat : string → seq<string> → string 返回通过将给定的字符串与分隔符连接而构成的新字符串。
exists : (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 通过串联指定数目的字符串实例来返回字符串。

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

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 !

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

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

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

Tutorials Point
Coding Ground
Absolute Classes

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

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

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

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Service Mesh实践指南 -〔周晶〕

推荐系统三十六式 -〔刑无刀〕

数据分析实战45讲 -〔陈旸〕

10x程序员工作法 -〔郑晔〕

DDD实战课 -〔欧创新〕

陈天 · Rust 编程第一课 -〔陈天〕

Tony Bai · Go语言第一课 -〔Tony Bai〕

全链路压测实战30讲 -〔高楼〕

Kubernetes入门实战课 -〔罗剑锋〕

好记忆不如烂笔头。留下您的足迹吧 :)