Objective c 目标c:在普通模式的基础上比较字符串

Objective c 目标c:在普通模式的基础上比较字符串,objective-c,Objective C,我有两条线 NSString *a=@"1_2"; NSString *b=@"1_3"; 我想比较这两个字符串。我想这两个字符串应该相等。我所说的相等是指前两个字符是相同的 有什么方法可以比较这两个字符串吗?您应该使用正则表达式。您应该创建一个与“数字-下划线-数字”对应的正则表达式,然后如果a和b符合该表达式,则它们都按照您希望的方式“相等”,当然不是字面上的相等 if ([a isEqualToString:b]) { NSLog(@"equal"); } 看看这个: 例如,

我有两条线

NSString *a=@"1_2";
NSString *b=@"1_3";
我想比较这两个字符串。我想这两个字符串应该相等。我所说的相等是指前两个字符是相同的


有什么方法可以比较这两个字符串吗?

您应该使用正则表达式。您应该创建一个与“数字-下划线-数字”对应的正则表达式,然后如果a和b符合该表达式,则它们都按照您希望的方式“相等”,当然不是字面上的相等

if ([a isEqualToString:b]) {
    NSLog(@"equal");
}
看看这个:

例如,与“数字-下划线-数字”匹配的正则表达式应为:\d\ud

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
}

以下是仅比较前两个字符的方法:

- (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)]; 
    }
}
-(NSComparisonResult)将:(NSString*)str1的FirstWoCharacters与:(NSString*)str2进行比较
{
如果([str1长度]<2){
//接收机太短,请后退。
返回[str1比较:str2];
}否则{
返回[str1比较:str2选项:0范围:NSMakeRange(0,2)];
}
}

我认为这不是他想要的。他希望“1_2”等于“1_3”。@是的,我希望这两个字符串根据它们的共同模式相等。你确定它们相等的标准是什么?你需要确切地定义为什么这些字符串应该被视为相等。是否只比较前几个字符?前两个?完全不同的东西?@DarkDust我想比较前两个角色。
if ([[a substringToIndex:2] isEqualToString:[b substringToIndex:2]]) {
    NSLog(@"equal");
}