2013-10-28 3 views
0

В текстовом поле, когда пользователь вводит значение с escape-символом, я хочу работать так же, как и пользователь, но он ведет себя как строка для \ e тоже.String includesin Escape character

Подробнее. предположим, что пользователь ввел \ e [3 ~, но когда я его распечатаю в консоли, он показывает \ e [3 ~. На самом деле это должно печатать как ¿[3 ~, поэтому оно будет работать идеально для меня.

Я пробовал эту линию, и она работает.

NSString * str=[textField.text stringByReplacingOccurrencesOfString:@"\\e" withString:@"\e"]; 

Но предположим, что если пользователь вводит значение в шапки типа \ E [3 ~, то его не заменяет. поэтому я попытался с подобным

NSString * str=[textField.text stringByReplacingOccurrencesOfString:@"\\e" withString:@"\e"]; 
     str=[textField.text stringByReplacingOccurrencesOfString:@"\\E" withString:@"\E"]; 

Но это не работает в случае, если в то время как пользователь вошел текст в малых \ ​​е [3 ~. При этом, когда первая строка выполнит замену \ e, она даст мне отличный результат, как ¿[3 ~, но когда она выполнит следующую строку, она даст мне такую ​​же \ e [3 ~ строку.

Пожалуйста, предложите мне, как я могу проверить наличие обеих букв, и если я могу проверить для всех экранирующих символов одновременно.

+0

попробовать это http://stackoverflow.com/questions/19564950/replace-unicode-value-in-string – user1673099

+0

@ user1673099. На самом деле это для обратного случая. Я хочу, чтобы в этом вопросе были реверсивные ответы. – Nikunj

ответ

1

Ошибка в коде, что вторая линия принимает оригинальный строку textField.text вместо результата с первой строки. То, что вы, вероятно, имел в виду,:

NSString *str = [textField.text stringByReplacingOccurrencesOfString:@"\\e" withString:@"\e"]; 
str = [str stringByReplacingOccurrencesOfString:@"\\E" withString:@"\E"]; 

В качестве альтернативы, вы можете сделать замену в одном шаге с помощью опции NSCaseInsensitiveSearch:

NSString *str = [textField.text stringByReplacingOccurrencesOfString:@"\\e" 
         withString:@"\e" 
          options:NSCaseInsensitiveSearch 
          range:NSMakeRange(0, [textField.text length])]; 
+0

ohh да моя ошибка. Работа с вышеуказанной строкой. Спасибо за ответ. Еще один вопрос: Есть ли у вас какая-либо идея, хотите ли вы сразу проверить все escape-символы? – Nikunj

+0

@ OKNC2: Возможно, вы можете использовать код из http://stackoverflow.com/questions/19313631/replacing-multiple-characters-in-nsstring-by-multiple-other-characters-using-ad, который использует несколько замен, используя поисковый словарь. Или вы используете NSRegularExpression для поиска всех escape-последовательностей. –

+0

хорошо приятель действительно спасибо. – Nikunj