字符串包括转义字符

时间:2013-10-28 07:58:50

标签: iphone unicode escaping

在文本字段中,当用户输入带有转义字符的值时,我想像用户输入一样工作,但它的行为就像\ e的字符串一样。

更详细。 假设用户输入了\ 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~string。

请建议我如何检查这两个字母,以及我是否可以一次检查所有转义字符。

1 个答案:

答案 0 :(得分: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])];