使用 kCFStringTransformToUnicodeName 或 NSStringTransformToUnicodeName 时额外的 \N{...}
Extra \N{...} when using kCFStringTransformToUnicodeName or NSStringTransformToUnicodeName
let string = "\u{00A0}" // no-break space
let transformed = string.stringByApplyingTransform(NSStringTransformToUnicodeName, reverse: false)
预期结果:NO-BREAK SPACE
实际结果:\N{NO_BREAK_SPACE}
为什么要多 \N{
和 }
?它们有什么用,除了 regex/scanning/parsing/etc?
之外还有什么方法可以移除它们
这就是 ICU 和 Unicode 在正则表达式中表示命名代码点的方式。所以我对这个输出一点也不感到惊讶。
Here is a link that reference this syntax at unicode.org.
这也解释了 in this other page at ICU Project。
PS:\N{}
实际上是 \p{name=…}
的等价物——如链接锚点上方的 unicode.org 页面所述)。您可以在 regular-expressions.info 中看到类似的语法,其中提到使用其属性定义 Unicode 代码点的 \p{…}
语法。
let string = "\u{00A0}" // no-break space
let transformed = string.stringByApplyingTransform(NSStringTransformToUnicodeName, reverse: false)
预期结果:NO-BREAK SPACE
实际结果:\N{NO_BREAK_SPACE}
为什么要多 \N{
和 }
?它们有什么用,除了 regex/scanning/parsing/etc?
这就是 ICU 和 Unicode 在正则表达式中表示命名代码点的方式。所以我对这个输出一点也不感到惊讶。
Here is a link that reference this syntax at unicode.org.
这也解释了 in this other page at ICU Project。
PS:\N{}
实际上是 \p{name=…}
的等价物——如链接锚点上方的 unicode.org 页面所述)。您可以在 regular-expressions.info 中看到类似的语法,其中提到使用其属性定义 Unicode 代码点的 \p{…}
语法。