我有一个以“+”和“0”的任意组合开头的字符串,并希望将其替换为“+”。
我用regEx做了:
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"
它有效,但需要很长时间。
答案 0 :(得分:0)
我试过这个,它比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:@"+"];