我目前正在开发一个Objective C程序,它接收一个UTF-8字符输入字符串,如" U + 0008"。这些字符串的类型为NSString。现在我需要将表示此字符的字符串转换为相应的UniChar(0x0008)。
你知道这样做的优雅方式吗?
谢谢! 佩德罗
答案 0 :(得分:1)
如果您的NSString
格式@"U+xxxx"
,其中 x 是十六进制数字,那么下面是两种获取值的方法,"优雅&# 34;每个人都在旁观者的眼中:
a)使用NSScanner
。方法scanString:intoString
可用于检查U+
,方法scanHexInt:
以十六进制值读取,方法isAtEnd
检查后面没有任何内容十六进制值。此方法不会将十六进制数限制为最多四位数。
b)使用sscanf
或strtol
。这些是C级API,您可以使用NSString
从UTF8String
获取C字符串。使用scanf
,您可以检查U+
并读取十六进制数字,并在一行中设置最大位数 - 如果这是您对#34;优雅"的定义。但是,检查所有输入是否需要花费一些时间。
还有很多其他方法可以做到这一点,从使用自己的滚动到使用正则表达式(NSRegularExpression
)来检查格式并提取4个十六进制数字,准备转换为整数。
注意如果你看到4个十六进制数字,那么你有一个16位值,更像是UTF-16而不是UTF-8。