2013-10-28 177 views
0

在文本字段中,當用戶使用轉義字符輸入值時,我想要像用戶輸入一樣工作,但它的行爲類似於\ e的字符串。字符串includin轉義字符

更詳細地說, 假設用戶輸入了\ 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〜字符串。

請建議我如何檢查兩個字母,如果我可以一次檢查所有轉義字符。

+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是我的錯誤。與上面的線一起工作。感謝您的回覆。還有一個問題你是否想知道是否想一次檢查所有的逃逸字符? – Nikunj

+0

@ OKNC2:也許你可以使用http://stackoverflow.com/questions/19313631/replacing-multiple-characters-in-nsstring-by-multiple-other-characters-using-ad的代碼,它可以使用多個替換一個查找字典。或者你使用NSRegularExpression來搜索所有的轉義序列。 –

+0

好吧好友真的很感謝。 – Nikunj