поиск и замена расширенного ASCII в строке - PullRequest
1 голос
/ 15 июля 2011

вопрос noob здесь.

Я пытаюсь сделать автоматический поиск и заменить процесс для значений символов ASCII в строке.

поэтому у меня есть строка, построенная из содержимогоUITextField

NSString *searchText;
searchText = (mmText.text);

тогда я делаю небольшой цикл и проверяю все введенные символы на их значения ASCII.если они не находятся в допустимом диапазоне, я хочу найти и заменить их чем-то другим (? на данный момент)

, так что, скажем, я нахожусь в цикле, и я получаю ASCII 45 символов (это минусзнак):

int asciiCode = 45;

теперь я хотел бы найти символ ASCII 45 в строке и заменить его знаком вопроса

Это то, что я делаю в данный момент:

 NSString *ascStr = [NSString stringWithFormat:@"%c", asciiCode];
 NSRange matchSpace;
 matchSpace = [searchText rangeOfString: ascStr];
 if (matchSpace.location == NSNotFound)
 {}
 else   
 NSMutableString *searchandReplace = [NSMutableString stringWithString: searchText];
 [searchandReplace replaceCharactersInRange: [searchandReplace rangeOfString: ascStr] withString: @"?"];
  mmText.text = searchandReplace;
  }

Это прекрасно работает для обычного значения ASCII (0-255), но, похоже, не работает для расширенных значений ASCII, пришедших из иностранных языков.Например, при использовании режима корейского языка один из главных символов выглядит как двойная буква W, но при печати через NSLog он выглядит как знак авторского права.Это, вероятно, причина, по которой процедура поиска и замены не работает для него.Он имеет значение ASCII 8361.

есть идеи?спасибо!

1 Ответ

2 голосов
/ 15 июля 2011

оказывается, это было так же просто, как изменить:

NSString *ascStr = [NSString stringWithFormat:@"%c", asciiCode];

до

NSString *ascStr = [NSString stringWithFormat:@"%C", asciiCode];

% с 8-разрядный символ без знака (без знака), напечатанный NSLog () как символ ASCII или, если не символ ASCII, в восьмеричном формате \ ddd или шестнадцатеричном формате Unicode \ udddd, где d - это цифра

% С 16-битный символ Unicode (unichar), напечатанный NSLog () как символ ASCII или, если не символ ASCII, в восьмеричном формате \ ddd или шестнадцатеричном формате Unicode \ udddd, где d - это цифра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...