2012-05-09 46 views
4

替換\\與\我使用的代碼的打擊與\使用stringByReplacingOccurrencesOfString

NSString *str [email protected]"\\u597d\\u6f02\\u4eae\\u7684\\u5a5a"; 

str= [str stringByReplacingOccurrencesOfString: @"\\\\" withString: @"\\" ]; 

更換\\但它看起來像stringByReplacingOccurrencesOfString不起作用。 他們兩個輸出

\u597d\u6f02\u4eae\u7684\u5a5a 

歡迎任何評論

+0

是的,如果我寫了海峽= [STR stringByReplacingOccurrencesOfString:@「\ \「withString:@」\「];它會在@「\」 – arachide

+0

處報告語法錯誤,因此我需要知道\ in @「」 – arachide

+0

中的正確表達式。查看更新。 – dasblinkenlight

回答

4

這是因爲源字符串不包含雙斜線:所有一倍斜線通過創建字符串常量的過程中,編譯器消耗,單斜槓替換成你最終的字符串到達​​:

\u597d\u6f02\u4eae\u7684\u5a5a 

在字符串常量內使用斜槓時,需要兩個斜槓來表示一個斜線。在傳遞給正則表達式的字符串常量中使用斜線時,需要四個斜槓:四個斜線中的兩個將被編譯器使用,然後其餘兩個中的一個將被正則表達式編譯器使用。

這裏是做你期望它做你的榜樣:

NSString *str [email protected]"\\\\u597d\\\\u6f02\\\\u4eae\\\\u7684\\\\u5a5a"; 
NSLog(@"%@", str); 
str= [str stringByReplacingOccurrencesOfString: @"\\\\" withString: @"\\" ]; 
NSLog(@"%@", str); 

輸出看起來是這樣的:

\\u597d\\u6f02\\u4eae\\u7684\\u5a5a 
\u597d\u6f02\u4eae\u7684\u5a5a 
0

str沒有在它\\\\ - 只有\\ S作爲你可以看到... ...這是你第一個後打印出什麼指定語句,因此stringByReplacingOccurrencesOfString找不到任何要替換的內容。

相關問題