Задача c: сравнение строк на основе общей схемы - PullRequest
0 голосов
/ 07 марта 2012

У меня есть две строки.

NSString *a=@"1_2";
NSString *b=@"1_3";

Я хочу сравнить эти две строки. Я хочу, чтобы эти две строки были равны. Под равным я подразумеваю, что первые два символа одинаковы.

Есть ли метод, который может сравнить эти две строки?

Ответы [ 4 ]

2 голосов
/ 07 марта 2012

Вот метод для сравнения только первых двух символов:

- (NSComparisonResult)compareFirstTwoCharactersOf:(NSString *)str1 with:(NSString *)str2
{
    if ([str1 length] < 2) {
        // Receiver too short, fall back.
        return [str1 compare:str2];
    } else {
        return [str1 compare:str2 options:0 range:NSMakeRange(0, 2)]; 
    }
}
1 голос
/ 07 марта 2012
if ([a isEqualToString:b]) {
    NSLog(@"equal");
}
0 голосов
/ 07 марта 2012
if ([[a substringToIndex:2] isEqualToString:[b substringToIndex:2]]) {
    NSLog(@"equal");
}
0 голосов
/ 07 марта 2012

Вы должны использовать регулярные выражения. Вы должны создать регулярное выражение, которое соответствует «цифре подчеркивания цифры», а затем, если a и b соответствуют выражению, тогда они оба «равны» так, как вы хотите, чтобы они не были буквально равны, конечно.

Проверьте это: https://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

В качестве примера, регулярное выражение, которое соответствует «цифре подчеркивания цифры», должно быть: \ d_ \ d

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\d_\d" options:0 error:NULL];
NSString *a = @"1_2";
NSString *b = @"1_3";
NSTextCheckingResult *matchA = [regex firstMatchInString:a options:0 range:NSMakeRange(0, [a length])];
NSTextCheckingResult *matchB = [regex firstMatchInString:b options:0 range:NSMakeRange(0, [b length])];
if(matchA && matchB){
    //Strings match the same pattern
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...