[QString] 关于新增的 JavaEscape 和 JavaUnescape 函数说明

QString 新增了两个函数 JavaEscape 和 JavaUnescape 来处理字符串的转义。实际上,它的转义规则和 C++/C# 基本一致,所以同样的处理也适应于 C++/C# 函数。

目前该函数支持的转义序列包括:

  • ASCII 码 7 至 13 对应的转义符,分别是:
    7 -> \a
    8 -> \b
    9 -> \t
    10 -> \n
    11 -> \v
    12 -> \f
    13 -> \r
  • 特殊字符:
    \ -> \\
    ‘ -> \’
    ” -> \”
  • 除空格(ASCII 码 32) 到 ~ 之间的所有字符,如果指定 ADoEscape 为 true 时,会转义为 \uHHHH 的十六进制 Unicode 内码表示

相比转义, JavaUnescape 额外支持:

  • \? 会转义为 ?
  • \xHH 会转义为十进制 HH 对应的字符
  • \UHHHHHHHH 会转义为十六进制 HHHHHHHH 所对应的字符(一般是扩展区字符,C# 规则对应0x10000~0x1FFFF之间的字符,JavaUnescape 不对范围进行检查)
  • \OOO 会转义为八进制 OOO 所对应的字符,其中数字最多3个不超过7的数字,第一个不超过3
  • 如果启用 AStrictEscape 限制,则无效的转义序列会抛出异常,如果不启用,则会忽略掉转义符,例如:
    \joke 会被转换为 joke ,而不是 \joke
分享到: