2009-11-23 137 views
2

假设我有一个字符串“167282”。我如何检查字符串是否包含“128”?是否有任何规定知道匹配第一个字符串的第二个字符串的百分比? (如果第二个字符串中的所有字符都存在于第一个字符串中)请提前帮助和thanx。检查一个nsstring是否与另一个字符串匹配

+2

嗨Shyam,这是一个网站,您可以提前thanx,当有人回答你的问题,确保你回来,并给他们一个upvote,并在适当时将其标记为答案。 – 2009-11-23 09:44:50

回答

6

使用以下:

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那场比赛。这是,尽我所知,你打算用你的问题 - 百分比匹配的概念不会有任何意义,否则。

+0

Thanx a ton to all of guys guys – Bapu 2009-11-23 08:06:08

+0

我最初需要的是检查一个字符串是否说明例如14672中有字符1,3,7。要得到所有3个字符是否存在或其中2个存在或他们中没有一个出现在我的字符串中 – Bapu 2009-11-23 08:36:54

+0

这就是这个片段的意义所在,Shyam。如果您提供的答案之一是您正在寻找的答案,您应该使用绿色选中标记对其进行提示并/或将其标记为已接受的答案。 – 2009-11-23 15:05:50

1

您总是可以使用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%正确“通过这种方法。根据您的预期用途,这可能会或可能不是您想要的。

5

您可以使用NSStringrangeOfString方法来确定字符串是否包含另一个字符串,如this question on the Apple Mailing Lists的答案所示。

if ([@"167282" rangeOfString:@"128"].location != NSNotFound) { 
    NSLog(@"String contains '128'."); 
} 
else { 
    NSLog(@"String doesn't contain '128'."); 
} 
相关问题