NSString为空,长度= 1?

时间:2012-05-30 13:38:42

标签: objective-c nsstring string string-length

我遇到了一个非常奇怪的行为:

NSLog(@"substring: '%@'\t- length: %d",substring,substring.length);

返回

substring: '‍'  - length: 1

substring变量是一个NSString对象。

有人可以解释发生了什么......

编辑::已解决

艾米回答:

  

打印一个看不见的字符:   

     

ZERO WIDTH JOINER Unicode:U + 200D,UTF-8:E2 80 8D

if ([substring isEqualToString:@"\u200d"]) {
    NSLog(@"It is a ZERO WIDTH JOINER...");
}

感谢Phillip提示。

4 个答案:

答案 0 :(得分:1)

看不见的空间怎么样?您应该检查您的子字符串是否为U + 200B符号,或者在这里查看http://www.cs.tut.fi/~jkorpela/chars/spaces.html

答案 1 :(得分:0)

可能是某种空白。如果要忽略空格,可以尝试:

string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

答案 2 :(得分:0)

它正在打印一个看不见的角色。:

ZERO WIDTH JOINER Unicode:U + 200D,UTF-8:E2 80 8D

答案 3 :(得分:0)

我不得不使用以下内容来消除一些额外的隐形。

[[NSCharacterSet alphanumericCharacterSet] invertedSet]