我在条件中匹配字符串。两个字符串完全相同。我还修剪了所有空格和换行符。但是编译器说两者并不相同。
我调查了很多,然后我发现两个字符串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:
的几次调用来替换/删除它们。但是,如果有其他空格字符,请查看其他方法来清理字符串 - 请参阅NSString
,NSCharacterSet
,NSRegularExpression
等。
呵呵