2015-10-30 4 views
1
let string = "\u{00A0}" // no-break space 
let transformed = string.stringByApplyingTransform(NSStringTransformToUnicodeName, reverse: false) 

Ожидаемый результат: NO-BREAK SPACEExtra N {...} при использовании kCFStringTransformToUnicodeName или NSStringTransformToUnicodeName

Фактический результат: \N{NO_BREAK_SPACE}

Почему дополнительный \N{ и }? Для чего они нужны, и есть ли способ их удалить, кроме регулярного выражения/сканирования/разбора/etc?

ответ

1

Это так ICU & Юникод представляет собой именованные кодовые точки в регулярных выражениях. Поэтому я вовсе не удивлен этим выходом.

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, в которых упоминается синтаксис \p{…} для определения кодовых точек Unicode с использованием их свойств.

+0

Спасибо за ответ. Я собирался снять эти символы, но теперь, когда я знаю, что они являются официальными именами кодовых имен в Юникоде, я оставлю их. (Это для распечатки читаемой отладочной версии строки, которая может содержать специальные символы, которые трудно читать в моноширинном шрифте.) –

 Смежные вопросы

  • Нет связанных вопросов^_^