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 ,但它仍然是 U ..

我能在这里错过什么?谢谢 。

4

1 回答 1

0

您应该将返回值分配给 a 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如果您还想替换以匹配给定字符串的大小写,则可能需要使用搜索选项。

于 2013-09-27T09:14:14.240 回答