2013-01-04 49 views
1

我希望替换NSString子用另一个子在目的C.如何在Objective C中将另一个子字符串替换为另一个子字符串?

我知道如何定位我想替换字符串:

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

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

回答

5

我认为你的答案在这里Replace occurrences of NSString - iPhone[response stringByReplacingOccurrencesOfString:@"aaa" withString:@"bbb"];也可以在任何字符串和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); 
+0

谢谢!我的意思是,其他问题中的字符串是一个URL,我的字符串不是。这个问题的答案似乎基于它是一个URL的事实。但无论如何,你的回答给了我我需要的东西 - 谢谢你! –

3

我这是怎么检查一个子串和替换/删除NSString的子串:

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

非常有帮助,但其他回答者先到这里,所以我不得不给他信贷 - 仍然,非常感谢。 –

+0

没问题,只是想展示用Objective-C的内置方法完成这项任务是多么容易。 – user990230

相关问题