【问题标题】:How can I remove specific characters from an NSString programmatically?如何以编程方式从 NSString 中删除特定字符?
【发布时间】:2012-11-09 13:49:51
【问题描述】:

我需要帮助过滤 NSString。假设我有一个名为 myString 的字符串。

NSString *myString = @"HelloWorld";

如何过滤掉“你好”这个词。或者如果我想删除前五个字母,如何删除特定数量的字母(以它开头)。

我面临的另一个例子:

NSString *myString = @"Hello hi World"; 

同样,我想删除“Hello”和之后的空格。还有一次我可能想删除“Hello hi”这两个词和之后的空格,这样就只剩下“World”了。

请有人解释在 NSStrings 中删除字符的基础知识吗?我对 Objective-c 的世界完全陌生,阅读类参考让我更加困惑。我只有 12 岁,所以不要因为不理解类参考而对我苛刻。

【问题讨论】:

  • 阅读 NSString 类参考。如果您仍然不知道该怎么做,请发布一些代码并再次询问。
  • 我想知道的是,您之前是如何以非编程方式删除它们的?

标签: iphone objective-c ios xcode nsstring


【解决方案1】:

对于这种情况,您需要一个 NSMutableString:

NSMutableString *mutableString = @"Hello World";
[mutableString deleteCharactersInRange:NSMakeRange([mutableString length]-11, 6)];
NSLog (@"%@", mutableString);

NSMakeRange 的解释:首先你走到字符串的末尾并倒数长度(11)。现在你在“H”字符上。现在您删除以下六个字符。 “世界”现在剩下了。

【讨论】:

  • 谢谢,很高兴能帮到你!
【解决方案2】:

NSString 有很多方法可以做几乎所有事情,但需要考虑的是 NSString 是不可变的,所以所有这些方法都返回一个新字符串。如果这成为问题,您可以查看 NSMutableString ,它具有操作当前字符串的方法。

【讨论】:

    【解决方案3】:

    你不能编辑 NSString 对象,它是不可变的。您应该改用 NSMutableString。

    【讨论】:

      【解决方案4】:

      Xcode 9 • Swift 4 或更高版本

      这两种从字符串中删除字符的方法:

      dropLast() 返回一个可选项,因此它可以为 nil。 removeLast() 返回最后一个字符,不是可选的,所以如果字符串为空就会崩溃。

      let string = "Hello World"
      
      let substring1 = String(string.dropFirst())            // "ello World" 
      let substring2 = String(string.dropFirst(2))           // "llo World" 
      
      let substring3 = String(string.dropLast())             // "Hello Worl"
      let substring4 = String(string.dropLast(2))            // "Hello Wor"
      

      【讨论】:

        猜你喜欢
        • 2015-06-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多