如何用多个其他字符串替换多个字符串的出现次数[NSString]

时间:2012-11-17 17:17:53

标签: iphone objective-c ios nsstring

NSString *string  = [myString stringByReplacingOccurrencesOfString:@"<wow>" withString:someString];

我有这个代码。现在假设我的应用程序的用户输入了两个不同的字符串,我想用两个不同的其他字符串替换,我该如何实现呢?我不在乎它是否使用私有API,我正在为越狱平台开发。我的用户要么输入要么或者。我想用它们各自被替换的字符串替换那些字符串的出现:)

提前致谢:P

4 个答案:

答案 0 :(得分:6)

最简单的解决方案是运行stringByReplacingOccurrencesOfString两次:

NSString *string  = [[myString
    stringByReplacingOccurrencesOfString:@"<wow>" withString:someString1]
    stringByReplacingOccurrencesOfString:@"<boo>" withString:someString2];

答案 1 :(得分:5)

dasblinkenlight和Matthias的答案都有效,但它们都会导致创建几个中间NSStrings;如果你不经常做这个操作,这不是一个真正的问题,但更好的方法看起来像这样。

NSMutableString *myStringMut = [[myString mutableCopy] autorelease];
[myStringMut replaceOccurrencesOfString:@"a" withString:somethingElse];
[myStringMut replaceOccurrencesOfString:@"b" withString:somethingElseElse];
// etc.

然后您可以像使用myStringMut一样使用myString,因为NSMutableString是一个NSString子类。

答案 2 :(得分:2)

我会再次运行字符串替换方法

NSString *string  = [myString stringByReplacingOccurrencesOfString:@"foo" withString:@"String 1"];
string = [string stringByReplacingOccurrencesOfString:@"bar" withString:@"String 2"];

答案 3 :(得分:2)

这在Swift 3.1中很适合我

let str = "hi hello hey"

var replacedStr = (str as NSString).replacingOccurrences(of: "hi", with: "Hi")

replacedStr = (replacedStr as NSString).replacingOccurrences(of: "hello", with: "Hello")

replacedStr = (replacedStr as NSString).replacingOccurrences(of: "hey", with: "Hey")

print(replacedStr) // Hi Hello Hey