удалить символы не ASCII из строки NSString в target-c - PullRequest
4 голосов
/ 15 июня 2011

У меня есть приложение, которое синхронизирует данные с удаленной БД, которую заполняют пользователи.Кажется, что люди копируют и вставляют дерьмо из тонны разных ОС и программ, что может привести к тому, что в систему будут импортированы различные скрытые значения, не входящие в ASCII.

Например, я получаю следующее:

Artist:â â Ioco

В результате происходит отправка обратно в систему во время синхронизации, и мое преобразование JSON усугубляет проблему, и некорректные символы в разных местах вызывают сбой моего приложения.

Как найти и удалить любой из этих недопустимых символов

1 Ответ

21 голосов
/ 15 июня 2011

Хотя я твердо верю, что поддержка юникода - правильный путь, вот пример того, как вы можете ограничить строку только определенными символами (в данном случае ASCII):

NSString *test = @"Olé, señor!";

NSMutableString *asciiCharacters = [NSMutableString string];
for (NSInteger i = 32; i < 127; i++)  {
    [asciiCharacters appendFormat:@"%c", i];
}

NSCharacterSet *nonAsciiCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:asciiCharacters] invertedSet];

test = [[test componentsSeparatedByCharactersInSet:nonAsciiCharacterSet] componentsJoinedByString:@""];

NSLog(@"%@", test); // Prints @"Ol, seor!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...