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");
}