0

在文本字段中,当用户使用转义字符输入值时,我希望与用户输入相同,但它的行为也类似于 \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"];

但如果用户在小 \e[3~. 有了这个,当第一行将执行替换 \e 时,它​​会给我完美的结果,如 ¿[3~ 但是当它执行下一行时,它会给我相同的 \e[3~ 字符串。

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

4

1 回答 1

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])];
于 2013-10-28T12:15:08.787 回答