【问题标题】:Objective-C: Find and Replace in StringObjective-C:在字符串中查找和替换
【发布时间】:2013-09-15 16:48:04
【问题描述】:

我有一个从网站动态生成的字符串,我想更改它。

我已经知道您需要将字符串更改为NSMutableString,但我要删除的部分几乎永远不会相同。 (例如[XXXXX][XABXX] ...有成千上万的组合)。

唯一的静态部分是两端的方括号,中间有 5 个字符。

如何识别并删除这个由七个字符组成的字符串([*****],其中 * 代表一个随机字母)?

【问题讨论】:

  • 也许用正则表达式...?

标签: ios objective-c replace nsmutablestring


【解决方案1】:

简单搜索一下就可以找到here:

做一个简单的改变:

- (NSString *)stringCleaner:(NSString *)yourString {
    NSScanner *theScanner;
    NSString *text = nil;

    theScanner = [NSScanner scannerWithString:yourString];

    while ([theScanner isAtEnd] == NO) {
        [theScanner scanUpToString:@"[" intoString:NULL] ;
        [theScanner scanUpToString:@"]" intoString:&text] ;
        yourString = [yourString stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@]", text] withString:@""];
    }

    return yourString;
}

【讨论】:

  • 你能把它放在 IBAction 中吗?
  • 当然,您可以使用该代码设置 IBAction 方法,但不会返回字符串,而是将值设置在您需要的位置或执行以下操作://将此操作添加到 UIButton - (IBAction) buttonAction:(id)sender { NSString *finalString = [self stringCleaner:@"mytext[azert]toReplace"]; //用 finalString 做一些事情 }
【解决方案2】:

查看使用NSRegularExpression 类来查找您需要操作的每个子字符串。

【讨论】:

  • 我能够让它与正则表达式一起工作,除了NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\["(...替换为“”)如果我这样做,我会得到一个空白输出。任何其他正则表达式都可以。您知道有什么方法可以删除“[”?
  • \[ 是正确的转义序列。你用\[\d{5}\]了吗?
  • 我得到了 \d\] 的未知转义序列
  • 没关系。请注意,在 obj-c 中,您需要像这样转义:\\[
猜你喜欢
  • 2016-02-09
  • 2020-08-12
  • 2010-10-14
  • 2011-07-28
  • 2011-08-22
  • 1970-01-01
  • 2023-03-25
  • 2015-09-22
相关资源
最近更新 更多