2013-07-05 84 views
6

我有以下的NSString:檢查是否字符串包含大於號

NSString *[email protected]"megaUser 35 youLost 85 noob 10 showTime 36 pwn 110" 

我想知道當此字符串包含比80大的號碼我並不需要知道在哪裏,有多少或什麼實際數字只是一個布爾值(YES或NO)。我曾考慮將字符串重新排序以除去除了數字之外的所有字符,但在此之後,我不確定執行檢查的有效方式是什麼。

換句話說,是否有一個解決方案,不需要將字符串拆分爲數組組件,然後一次一個地檢查?如果有人知道如何做到這一點,請讓我知道!

謝謝!

回答

3

您可以用掃描儀對這樣的:

// The string to parse 
NSString *[email protected]"megaUser 35 youLost 85 noob 10 showTime 36 pwn 110"; 

// Create a new scanner for this string and tell it to skip everything but numbers 
NSScanner *scanner = [[NSScanner alloc] initWithString:testString]; 
NSCharacterSet *nonNumbers = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 
[scanner setCharactersToBeSkipped:nonNumbers]; 

// Scan integers until we get to the end of the string 
// If you will have numbers larger than int, you can use long long and scanLongLong for larger numbers 
int largestNumber = 0, currentNumber = 0; 
while ([scanner scanInt:&currentNumber] == YES) 
{ 
    if (currentNumber > largestNumber) 
     largestNumber = currentNumber; 
} 

// See if the number is larger than 80 
if (largestNumber > 80) 
    return YES; 

// Nope 
return NO; 
+1

感謝您的快速回復。我會試一試。你能告訴我這是否資源很重?再次感謝! – Teddy13

+0

它可能與你在不解析C字符串時一樣快,即使這樣你也可能不會獲得太多收益。如果你正在做數以千計的這些數據中的10個,那麼就應該分析不同的方法來查看最快的數據,但否則這將是更好的方法之一。 – lnafziger

+0

完美。非常感謝!將接受 – Teddy13

相關問題