【问题标题】:What is the fastest way to replace the first occurrence of a set of possible characters in a string?替换字符串中第一次出现的一组可能字符的最快方法是什么?
【发布时间】:2014-03-09 17:46:41
【问题描述】:

我有一个以“+”和“0”的任意组合开头的字符串,想用“+”替换它。

我用正则表达式做到了:

NSString *phoneNumber  = @"+000+123"
NSString *regExString   = @"^[+0]+(?=\\d*)";

NSRegularExpression *regEx = [NSRegularExpression regularExpressionWithPattern:regExString options:0 error:nil];
[regEx replaceMatchesInString:phoneNumber options:0 range:NSMakeRange(0, [phoneNumber length]) withTemplate:@"+"];

// result: @"+123"

有效,但耗时太长。

【问题讨论】:

    标签: regex performance nsstring


    【解决方案1】:

    我试过了,它比 regEx 解决方案快 60%:

    NSInteger posPrefixEnd;
    
    for (NSInteger pos=0; pos <[phoneNumber length]; pos++)
    {
       NSString *charAtPos = [phoneNumber substringWithRange:NSMakeRange(pos, 1)];
       if ([charAtPos isEqualToString:@"+"] || [charAtPos isEqualToString:@"0"])
       {
          posPrefixEnd = pos;
       }
       else
       {
          break;
       }
    }
    
    NSRange prefixRange = NSMakeRange(0, posPrefixEnd+1);
    [phoneNumber replaceCharactersInRange:prefixRange withString:@"+"];
    

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 1970-01-01
      • 2013-09-21
      • 2015-03-28
      • 2018-09-17
      • 2022-01-13
      • 2011-04-19
      • 2011-12-05
      • 2011-07-26
      相关资源
      最近更新 更多