2013-09-27 34 views
0

我有NSString chars,我所要建造在某些方面,比我必須更換它的字符,所以我用這個做:在一個字符串替換字符是不是爲我工作

[chars stringByReplacingOccurrencesOfString:[self convertDecimalToChar:num] withString:[self convertDecimalToChar:num+1]]; 

如果我打印:

NSLog(@"CHAR:%@ and look for:%@ replace with:%@",chars,[self convertDecimalToChar:num],[self convertDecimalToChar:num+1]); 

我可以看到:U U V,所以他有V至代替U,但它仍然ü..

西隧可能我錯過這裏? 謝謝。

+0

您是否將'stringByReplacingOccurrencesOfString:'的返回值賦值給'char'? 'stringBy ...'方法將返回一個新的'NSString''不會改變現有的字符串,因爲如果它是不可變的。 – rckoenes

+0

改爲使用「stringByReplacingCharactersInRange:withString:」。 請點擊此鏈接:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#jumpTo_120 –

+0

謝謝!我在想它會改變我的字符串。所以最好指定我的字符串還是使用你給我的另一種方法? – Curnelious

回答

0

你應該返回值分配給NSString

NSString *replaced = [chars stringByReplacingOccurrencesOfString:[self convertDecimalToChar:num] withString:[self convertDecimalToChar:num+1]]; 

NSLog(@"CHAR:%@ and look for:%@ replace with:%@ results in %@",chars,[self convertDecimalToChar:num],[self convertDecimalToChar:num+1], replaced); 

NSMutableString使用replaceCharactersInRange:withString:

[chat replaceCharactersInRange:[self convertDecimalToChar:num]withString:[self convertDecimalToChar:num+1]; 

replaceOccurrencesOfString:withString:options:range:的情況下,如果你需要更多的選項,如不區分大小寫替換:

NSRange range = NSMakeRange(0, [char length]); 
[char replaceOccurrencesOfString:[self convertDecimalToChar:num] withString:[self convertDecimalToChar:num+1] options:NSCaseInsensitiveSearch range:range]; 

您可能想要如果您還想替換以匹配給定字符串的大小寫,則使用搜索選項NSLiteralSearch

+0

其實字符是nsmutableString ..所以我不能。..爲此.. – Curnelious

+0

更改我的答案還包括'NSMutableString'替換方法,但你真的應該在你自己的文檔中找到這個。 – rckoenes