如何在Objective C中用另一个子串替换一个子串?

时间:2013-01-04 01:56:10

标签: objective-c nsstring substring

我想用Objective C中的另一个子字符串替换NSString子字符串。

我知道如何找到我要替换的子字符串:

        NSRange range = [string rangeOfString:substringIWantToReplace];
        NSString *substring = [string substringFromIndex:NSMaxRange(range)];

但是当涉及到实际移除/替换它时,我有点困惑。我是否在Replace substring with another substring C++处遵循C ++方法?或how to replace substring in c?处的C方法?在Objective-C: Substring and replace有一个相关问题,但有问题的字符串是一个网址,所以我认为我不能使用这些答案。

2 个答案:

答案 0 :(得分:5)

我认为你的回答是Replace occurrences of NSString - iPhone[response stringByReplacingOccurrencesOfString:@"aaa" withString:@"bbb"];也适用于任何字符串和URL。

如果你对url的百分比符号的关注,并且你想确定它将被正确替换,你可以首先解码字符串,替换,然后编码:

// decode
NSString *path = [[@"path+with+spaces"
    stringByReplacingOccurrencesOfString:@"+" withString:@" "]
    stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// replace
path = [path stringByReplacingOccurrencesOfString:@"aaa" withString:@"bbb"]
// encode
path = CFURLCreateStringByAddingPercentEscapes(
                                               NULL,
                                               (CFStringRef)path,
                                               NULL,
                                               (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
                                               kCFStringEncodingUTF8 );

答案 1 :(得分:3)

这是我检查子字符串并从NSString中替换/删除子字符串的方法:

if([titleName rangeOfString:@"""].location != NSNotFound) {
     titleName = [titleName stringByReplacingOccurrencesOfString:@""" withString:@"\""];
}