let string = "\u{00A0}" // no-break space
let transformed = string.stringByApplyingTransform(NSStringTransformToUnicodeName, reverse: false)
预期结果:NO-BREAK SPACE
实际结果:\N{NO_BREAK_SPACE}
为什么额外的\N{
and }
?它们的用途是什么,除了正则表达式/扫描/解析/等之外,有什么方法可以删除它们?
let string = "\u{00A0}" // no-break space
let transformed = string.stringByApplyingTransform(NSStringTransformToUnicodeName, reverse: false)
预期结果:NO-BREAK SPACE
实际结果:\N{NO_BREAK_SPACE}
为什么额外的\N{
and }
?它们的用途是什么,除了正则表达式/扫描/解析/等之外,有什么方法可以删除它们?
这就是 ICU 和 Unicode 在正则表达式中表示命名代码点的方式。所以我对这个输出一点也不感到惊讶。
ICU Project 的其他页面也对此进行了解释。
PS:\N{}
实际上是更短的等价物\p{name=…}
——正如链接锚上方的 unicode.org 页面中所解释的那样)。您可以在regular-expressions.info中看到类似的语法,其中提到了\p{…}
使用其属性定义 Unicode 代码点的语法。