检查一个nsstring是否与另一个字符串匹配
问题描述:
假设我有一个字符串“167282”。我如何检查字符串是否包含“128”?是否有任何规定知道匹配第一个字符串的第二个字符串的百分比? (如果第二个字符串中的所有字符都存在于第一个字符串中)请提前帮助和thanx。检查一个nsstring是否与另一个字符串匹配
答
使用以下:
NSString *compareString = @"128";
NSCharacterSet *compareCharSet = [NSCharacterSet characterSetWithCharactersInString:@"167282"];
NSUInteger strLen = [compareString length];
NSUInteger matchingCount = 0;
for (NSUInteger i = 0; i < strLen; ++i) {
if ([compareCharSet characterIsMember:[compareString characterAtIndex:i]])
++matchingCount;
}
float percentMatching = matchingCount/(float)strLen;
凡matchingCount将在compareString中匹配一个字符,字符“167282”的号码@和percentMatching将总字符%的compareString那场比赛。这是,尽我所知,你打算用你的问题 - 百分比匹配的概念不会有任何意义,否则。
答
您总是可以使用NSString方法rangeOfString:
来检查您的原始字符串是否包含您想要的子字符串。该方法将返回一个NSRange
与子的原始字符串中的位置:如果
[@"12345" rangeOfString:@"123"]; // Gives range {0, 3}
[@"12345" rangeOfString:@"345"]; // Gives range {2, 3}
[@"12345" rangeOfString:@"678"]; // Gives range {NSNotFound, 0}
这仅适用于该子是原始字符串中完全包含。
至于“数量正确”,您可以使用返回范围的length
属性以及原始字符串的长度来查看子字符串包含的原始字符串的哪一部分。例如:
NSRange r = [@"1234" rangeOfString:@"1"]; // Range {0, 1}
float portion = (float)r.length/(float)[@"1234" length]; // Gives 0.25f
请记住,这将土崩瓦解,如果子被重复 - 检查@"1"
为@"111"
子字符串将只给予第一次出现,这意味着它会要求该字符串为“33%正确“通过这种方法。根据您的预期用途,这可能会或可能不是您想要的。
答
您可以使用NSString
的rangeOfString
方法来确定字符串是否包含另一个字符串,如this question on the Apple Mailing Lists的答案所示。
if ([@"167282" rangeOfString:@"128"].location != NSNotFound) {
NSLog(@"String contains '128'.");
}
else {
NSLog(@"String doesn't contain '128'.");
}
嗨Shyam,这是一个网站,您可以提前thanx,当有人回答你的问题,确保你回来,并给他们一个upvote,并在适当时将其标记为答案。 – 2009-11-23 09:44:50