2013-07-05 23 views
6

Ich habe folgendes NSString:überprüfen, ob Zeichenfolge enthält Zahl größer als

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

Ich möchte wissen, ob diese Zeichenfolge eine Zahl größer als 80 enthält Ich muss nicht wissen, wo, wie viele oder welche Die tatsächliche Zahl ist nur ein boolescher Wert (JA oder NEIN). Ich habe darüber nachgedacht, die Zeichenfolge neu zu definieren, um alles außer Zahlen daraus zu entfernen, aber danach bin ich mir nicht sicher, was ein effizienter Weg für die Überprüfung wäre.

Mit anderen Worten, gibt es eine Lösung, die nicht die Zeichenfolge in Array-Komponenten zu brechen und dann eine nach der anderen zu überprüfen? Wenn jemand weiß, wie das geht, lass es mich wissen!

Vielen Dank!

Antwort

3

Sie können einen Scanner für diesen Einsatz:

// 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

Vielen Dank für die schnelle Antwort. Ich werde es versuchen. Können Sie mir sagen, ob das Ressourcen schwer ist? Danke noch einmal! – Teddy13

+0

Es ist wahrscheinlich ungefähr so ​​schnell, wie Sie bekommen werden, ohne die C-Saite zu analysieren, und selbst dann werden Sie wahrscheinlich nicht viel gewinnen. Wenn Sie zehntausende von diesen tun, dann wäre es wert, verschiedene Methoden zu erstellen, um zu sehen, was am schnellsten ist, aber ansonsten wird dies eine der besseren Möglichkeiten sein, dies zu tun. – lnafziger

+0

Perfekt. Ich danke dir sehr! Will akzeptieren – Teddy13

Verwandte Themen