1

我目前正在开发一个 Objective C 程序,它接收 UTF-8 字符的输入作为字符串,如“U+0008”。这些字符串是 NSString 类型的。现在我需要将这个代表这个字符的字符串转换为对应的 UniChar (0x0008)。

你知道这样做的优雅方式吗?

谢谢!佩德罗

4

1 回答 1

1

如果你有一个xNSString是十六进制数字的形式@"U+xxxx",那么下面是两种获取值的方法,每种方法的“优雅”都在旁观者的眼中:

一)使用NSScanner。该方法scanString:intoString可用于检查 ,U+读取scanHexInt:十六进制值的方法,以及isAtEnd检查十六进制值后是否没有任何内容的方法。此方法不将十六进制数限制为最多四位数字。

b) 使用sscanfstrtol。这些是 C 级 API,您可以从NSStringusing获取 C 字符串UTF8Stringscanf您可以检查并U+读取一个十六进制数字,其中一行中设置了最大位数 - 如果这是您对“优雅”的定义。然而,检查所有输入是否被消耗需要一点思考。

还有许多其他方法可以做到这一点,从自己滚动到使用正则表达式 ( NSRegularExpression) 检查格式并一次性提取 4 个十六进制数字以准备转换为整数。

请注意,如果您看到 4 个十六进制数字,那么您有一个 16 位的值,更像 UTF-16 而不是 UTF-8。

于 2014-03-27T00:34:54.300 回答