【问题标题】:String includin Escape character包含转义字符的字符串
【发布时间】:2013-10-28 07:58:49
【问题描述】:

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

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

【问题讨论】:

标签: iphone unicode escaping


【解决方案1】:

您的代码中的错误是第二行采用 original 字符串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])];

【讨论】:

  • 哦,是的,我的错误。使用上面的行。谢谢您的回复。还有一个问题您是否想一次检查所有转义字符?
  • @OKNC2:也许您可以使用stackoverflow.com/questions/19313631/… 中的代码,它使用查找字典进行多次替换。或者您使用 NSRegularExpression 搜索所有转义序列。
猜你喜欢
  • 2021-07-07
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多