我是 Objective-C 的新手,但在其他高级语言方面经验丰富。我想通过删除所有非数字字符来规范化字符串。换句话说,给定输入字符串“206-555-1212”,归一化结果应该是“2065551212”。下面的代码片段有效,但考虑到我在其他语言方面的经验,这似乎有点矫枉过正。有更好的方法吗?
编辑:输入字符串“(206) 555-1212”、“206.555.1212”、“206 555 1212”等也应该返回相同的标准化结果。
NSString * normalize(NSString * number)
{
NSString *normalizedNumber = @"";
NSString *tmpString = nil;
NSRange searchRange;
NSRange resultRange;
searchRange.location = 0;
searchRange.length = number.length;
while (0 < searchRange.length)
{
resultRange = [number rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]
options:NSLiteralSearch
range:searchRange];
tmpString = [number substringWithRange:resultRange];
normalizedNumber = [normalizedNumber stringByAppendingString:tmpString];
searchRange.location = resultRange.location + resultRange.length;
searchRange.length = number.length - searchRange.location;
}
return normalizedNumber;
}