2009-11-23 139 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'."); 
} 
相關問題