【问题标题】:NSMutableString modify while iterating text checking resultsNSMutableString 在迭代文本检查结果时修改
【发布时间】:2023-03-13 05:18:01
【问题描述】:

我正在尝试修改NSString,同时从NSRegularExpression 迭代NSTextCheckingResults

我知道它不会像我实现它的方式那样工作,因为每次替换都会改变字符串的长度,因此我的循环中 NSRages 的有效性。

如何在 for 循环中替换多个匹配项?这是我的代码:

NSMutableString *string = [@"[H]…[mm]…[s]" mutableCopy];
NSReguralExpression *exp = [NSRegularExpression regularExpressionWithPattern:@"(\\[[Hms]{1,2}\\])" options:0 error:nil];

for (NSTextCheckingResult *result in [exp matchesInString:string options:NSMatchingReportCompletion range:NSMakeRange(0, [string length])]) {
    [string replaceCharactersInRange:[result rangeAtIndex:0] withString:@"#"];
}

我现在有点卡住了。我想到的所有方法似乎都不起作用。

【问题讨论】:

    标签: loops replace nsstring nsregularexpression nsrange


    【解决方案1】:

    我找到了答案……我只是有点笨(一会没睡^^)。 逆序迭代字符串时,长度变化无关紧要:

    for (NSTextCheckingResult *result in [[exp matchesInString:string optinos:NSMatchingReportCompletion range:NSMakeRange(0, [string length])] reverseObjectEnumerator]) {
        // …
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2013-05-13
      • 2014-09-17
      • 2016-03-26
      相关资源
      最近更新 更多