Ios Objective-C中的字符串替换

Ios Objective-C中的字符串替换,ios,objective-c,iphone,nsstring,Ios,Objective C,Iphone,Nsstring,如何替换Objective-C中的字符串?NSString对象是不可变的(不能更改),但有一个可变的子类,它提供了几种替换字符串中字符的方法。这可能是你最好的选择。你可以使用这种方法 - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement …获取替换了子字符串的

如何替换Objective-C中的字符串?

NSString
对象是不可变的(不能更改),但有一个可变的子类,它提供了几种替换字符串中字符的方法。这可能是你最好的选择。

你可以使用这种方法

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target 
                                        withString:(NSString *)replacement
…获取替换了子字符串的新字符串(请参阅其他文档)

示例使用

NSString *str = @"This is a string";

str = [str stringByReplacingOccurrencesOfString:@"string"
                                     withString:@"duck"];

iOS上的旧版本中存在此问题。在最新的版本中,从右到左的模式运行良好。 我所做的如下:

首先,我检查iOS版本:

if (![self compareCurVersionTo:4 minor:3 point:0])
比:


如果要替换多个字符串:

NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo

它还可以使用StringByReplacingCharactersRange:withString:

for (int i = 0; i < card.length - 4; i++) {

    if (![[card substringWithRange:NSMakeRange(i, 1)] isEqual:@" "]) {

        NSRange range = NSMakeRange(i, 1);
        card = [card stringByReplacingCharactersInRange:range withString:@"*"];

    }

} //out: **** **** **** 1234
for(int i=0;i
我认为拥有NSString和NSMutableString子类的意义在于,NSString的实例是不可更改的。虽然——就像任何一个理智的人一样,我宁愿有鸭子也不愿有字符串——你刚刚重写了
str
的内容这一事实让我大吃一惊。但我猜
str
的地址在这个过程中发生了变化,它没有变化。str现在包含一个全新的字符串。stringByReplacingOccurencesOfString不会改变字符串。它只返回一个新字符串。请使用链接解释此代码的工作原理,不要只给出代码,因为解释更有可能帮助未来的读者。另见。
for (int i = 0; i < card.length - 4; i++) {

    if (![[card substringWithRange:NSMakeRange(i, 1)] isEqual:@" "]) {

        NSRange range = NSMakeRange(i, 1);
        card = [card stringByReplacingCharactersInRange:range withString:@"*"];

    }

} //out: **** **** **** 1234
NSString *stringreplace=[yourString stringByReplacingOccurrencesOfString:@"search" withString:@"new_string"];