相关文章推荐
另类的金针菇  ·  3分钟短文 | Laravel ...·  1 年前    · 
一身肌肉的烈马  ·  javascript - ...·  1 年前    · 

\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 =
let str2 =
    "abc\

字符串索引和切片

可使用类似数组的语法来访问字符串中的各个字符。 以下示例使用 [] 对字符串编制索引。 F# 6.0 中引入了此语法。 你还可使用 .[] 来为所有版本中的字符串编制索引。 新语法为首选语法。

printfn "%c" str1[1]

输出为 b

或者,可使用数组切片语法来提取子字符串,如下面的代码所示。

printfn "%s" str1[0..2]
printfn "%s" str2[3..5]

输出如下所示。

可按无符号字节数组(类型 byte[])表示 ASCII 字符串。 将后缀 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 属性和将字符串作为 Unicode 字符数组返回的 Chars 属性。 有关字符串的详细信息,请参阅 System.String

通过使用 System.StringChars 属性,可通过指定索引来访问字符串中的各个字符,如以下代码所示。

let printChar (str: string) (index: int) =
    printfn "First character: %c" (str.Chars(index))

String 模块

FSharp.Core 命名空间的 String 模块中包含其他字符串处理功能。 有关详细信息,请参阅 String 模块

  • 内插字符串
  • F# 语言参考
  • 即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback

    提交和查看相关反馈