NSString пусто с длиной = 1?

Я столкнулся с действительно странным поведением:

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

возвращается

substring: '‍'  - length: 1

Переменная substring является объектом NSString.

Может кто-нибудь объяснить, пожалуйста, что происходит...

РЕДАКТИРОВАТЬ:: решено

Как Эми ответила:

Это печать невидимого персонажа.: ‍

ZERO WIDTH JOINER Юникод: U+200D, UTF-8: E2 80 8D

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

И спасибо Филиппу за подсказку.

4 ответа

Решение

Это печать невидимого персонажа.

JO ZERO WIDTH JOINER Юникод: U+200D, UTF-8: E2 80 8D

Как насчет невидимого пространства? Вы должны проверить свою подстроку для символа U+200B, или посмотрите здесь http://www.cs.tut.fi/~jkorpela/chars/spaces.html

Может быть какой-то пробел. Если вы хотите игнорировать пробелы, вы можете попробовать:

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

Мне пришлось обрезать, используя следующее, чтобы избавиться от некоторых дополнительных невидимых.

[[NSCharacterSet alphanumericCharacterSet] invertedSet]
Другие вопросы по тегам