2012-05-30 53 views
1

我曾經遇到過一個非常奇怪的現象:NSString爲空,長度= 1?

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

回報

substring: '‍' - length: 1 

的字符串變量是一個NSString的對象。

有人能請解釋一下到底是怎麼回事......

編輯::解決

艾米回答:

它的印刷有不可見字符:

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

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

並感謝菲利普的提示。

+0

'substring'是什麼?它可能是一個零寬度字符? (例如http://www.fileformat.info/info/unicode/char/200b/index.htm) – mattjgalloway

+2

如果你使用NSLog(@「Character value:%d」,[substring characterAtIndex:0]),會發生什麼? '? –

+1

實際上,如果你的數組長度爲0而不是'''',它會返回'(nil)'。 – 2012-05-30 13:51:28

回答

0

它的印刷有不可見字符:

零寬連接符 的Unicode:U + 200D,UTF-8:E2 80 8D

0

可能是某種空白。如果你想忽略空白,可以嘗試:

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

謝謝您的建議,但我在發佈問題之前嘗試了此操作,但沒有任何幫助。 – Reggian

0

我不得不修剪使用以下來擺脫一些額外的隱形。

[[NSCharacterSet alphanumericCharacterSet] invertedSet]