0

我正在尝试将 unicode 连字符减号字符插入文本字符串。我看到以下内容出现“无效的通用字符”错误:

u+002D(连字符-减号)

[textViewContent insertString:@"\u002D" atIndex:cursorPosition.location];

但是,这些工作正常:

u+2212(减号)

[textViewContent insertString:@"\u2212" atIndex:cursorPosition.location];

u+2010(连字符)

[textViewContent insertString:@"\u2010" atIndex:cursorPosition.location];

我在这里戳了几个现有的 Unicode 讨论,但我还没有找到一个解释我的示例中导致第一个错误的不同之处。洞察力非常感谢。

4

1 回答 1

2

通用字符名称对其使用有一些限制。在 C99 和 C++98 中,不允许使用引用基本字符集(包括 U+002D)中的字符的字符。

C++11 更新了此要求,因此如果您在字符串或字符文字中,则允许使用引用基本字符的 UCN。根据您使用的编译器版本,我猜您可以使用 Objective-C++11 使您的代码合法。

也就是说,既然这个字符是 ASCII 和基本字符集的一部分,你为什么不直接写它呢?

@"-"
于 2012-06-21T22:35:01.127 回答