检查字符串是否包含大于的数字

时间:2013-07-05 23:32:59

标签: ios objective-c

我有以下NSString:

NSString *testString=@"megaUser 35 youLost 85 noob 10 showTime 36 pwn 110"

我想知道这个字符串是否包含大于80的数字。我不需要知道实际数字的位置,数量或数量,只需要一个布尔值(YES或NO)。我已经考虑过重新修改字符串以删除除了数字之外的所有内容,但在此之后我不确定检查的有效方法是什么。

换句话说,是否有一个解决方案不需要将字符串分解为数组组件,然后一次检查一个?如果有人知道如何做到这一点,请告诉我!

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用扫描仪:

// The string to parse
NSString *testString=@"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;