#iphone #objective-c #nsstring #string-formatting #string-comparison
#iPhone #objective-c #nsstring #форматирование строки #сравнение строк
Вопрос:
привет всем, у меня есть один NSString
в этом формате 1-123-123-1234
(номер телефона в базовом стиле США), мой вопрос в том, как мы можем сравнить, что моя строка форматируется в 1-123-123-1234
формате.
на основе форматирования сравнения строк я должен выполнить другую задачу .. так что у кого-нибудь есть какие-либо идеи относительно того же, пожалуйста, помогите мне.
Комментарии:
1. Я полагаю, вам следует использовать NSRegularExpression
Ответ №1:
Вы можете использовать a NSRegularExpression
, чтобы проверить, имеет ли ваша строка определенный формат.
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"^\ \d-\d{3}-\d{3}-\d{4}$"
options:NSRegularExpressionCaseInsensitive
error:nil];
int num = [regex numberOfMatchesInString:phoneNumberHere
options:0
range:NSMakeRange(0, [phoneNUmberHere length])];
if (num == 1) {
// match!
}
Комментарии:
1. Я думаю, что сначала
\d
это может быть просто1
, если OP проверяет только телефонные номера США, хотя единственным другим однозначным кодом страны является 7 для России.2. Это верно только для iOS 4.0 и выше. Если вы обнаружите, что пишете код для чего-то под 4.0, используйте
NSRegularExpressionSearch
один из методов поискаNSString
.3. когда я передаю свой номер телефона, я получаю сообщение с предупреждением: ‘NSRegularExpression’ может не отвечать на ‘-numberOfMatchesInString:’
4. я не могу сравнить с этим предупреждением.. сбой моего приложения. !! 🙁
5. Вместо этого используйте этот метод — (NSUInteger)numberOfMatchesInString:(NSString *)параметры строки:(NSMatchingOptions)диапазон параметров:(NSRange)диапазон. Для получения дополнительной информации обратитесь к ссылке на класс здесь developer.apple.com/library/mac/#documentation/Foundation /…