私は 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;
}