UTF8String 为相同的字符串 objective-c 给出不同的值



我在条件中匹配字符串。两个字符串完全相同。我还修剪了所有空格和换行符。但是编译器说两者并不相同。

我调查了很多,然后我发现两个字符串UTF8String值不同。

po otherPersonName
"76000 13590"
po [otherPersonName UTF8String]
"76000 13590"

po findPersonName
"76000 13590"
po [findPersonName UTF8String]
"xffffffc2xffffffa076000xffffffc2xffffffa013590xffffffe2xffffff80xffffffac"

我能解释一下如何正确匹配这个字符串。

findPersonName中,开头和数字之间有不间断的空格(U+00A0,UTF-8 C2 A0,po 显示为xffffffc2xffffffa0),末尾有 POP 方向格式(U+202C、UTF-8 E2 80 AC、xffffffe2xffffff80xffffffac)(表明该值来自具有混合脚本的较大文本,从左到右和从右到左)。

如果这些是唯一可能发生的字符,则可以使用对stringByReplacingOccurrencesOfString:withString:的几次调用来替换/删除它们。但是,如果有其他空格字符,请查看其他方法来清理字符串 - 请参阅NSStringNSCharacterSetNSRegularExpression等。

呵呵

最新更新