【问题标题】:String replacement in Objective-CObjective-C 中的字符串替换
【发布时间】:2010-10-14 16:06:11
【问题描述】:

Objective-C中如何替换一个字符是一个字符串?

【问题讨论】:

    标签: ios objective-c iphone nsstring


    【解决方案1】:

    你可以用这个方法

    - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target 
                                            withString:(NSString *)replacement
    

    ...获取替换子字符串的新字符串(参见NSString 其他人的文档)

    示例使用

    NSString *str = @"This is a string";
    
    str = [str stringByReplacingOccurrencesOfString:@"string"
                                         withString:@"duck"];
    

    【讨论】:

    • 我认为拥有 NSString 和 NSMutableString 子类的意义在于,NSString 的实例是不可更改的。虽然 - 就像任何理智的人一样,我宁愿每天都吃鸭子而不是字符串 - 你刚刚覆盖了 str 的内容这一事实让我大吃一惊。
    • 但是我猜str的地址在这个过程中改变了
    • 它不会改变。 str 现在包含一个全新的字符串。 stringByReplacingOccurencesOfString 不会改变字符串。它只是返回一个新字符串。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果你想要多个字符串替换:

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

      【讨论】:

        【解决方案4】:

        它还可以用 stringByReplacingCharactersInRange: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
        

        【讨论】:

          【解决方案5】:

          iOS 上的旧版本存在此问题。最近,从右到左的效果很好。 我所做的如下:

          首先我检查 iOS 版本:

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

          比:

          // set RTL on the start on each line (except the first)  
          myUITextView.text = [myUITextView.text stringByReplacingOccurrencesOfString:@"\n"
                                                                     withString:@"\u202B\n"];
          

          【讨论】:

            【解决方案6】:
            NSString *stringreplace=[yourString stringByReplacingOccurrencesOfString:@"search" withString:@"new_string"];
            

            【讨论】:

            • 请使用edit链接来解释这段代码是如何工作的,不要只给出代码,因为解释更有可能帮助未来的读者。另见How to Answersource
            猜你喜欢
            • 2011-07-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-10
            • 1970-01-01
            • 1970-01-01
            • 2023-03-08
            相关资源
            最近更新 更多