iphone - 如何检查 NSString 是否包含数值?

标签 iphone ios nsstring numeric

我有一个从公式生成的字符串,但是我只想使用该字符串,只要它的所有字符都是数字,否则我想做一些不同的事情,例如显示一条错误消息。

我一直在四处寻找,但发现很难找到符合我想做的事情的任何东西。我看过 NSScanner,但我不确定它是否检查了整个字符串,然后我实际上不确定如何检查这些字符是否为数字

- (void)isNumeric:(NSString *)code{

    NSScanner *ns = [NSScanner scannerWithString:code];
    if ( [ns scanFloat:NULL] ) //what can I use instead of NULL?
    {
        NSLog(@"INSIDE IF");
    }
    else {
    NSLog(@"OUTSIDE IF");
    }
}

因此,经过几个小时的搜索,我偶然发现了一个完全符合我要求的实现。

所以如果你想检查它们是否是你的 NSString 中的任何字母数字字符,这在这里有效

-(bool) isNumeric:(NSString*) hexText
{

    NSNumberFormatter* numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];

    NSNumber* number = [numberFormatter numberFromString:hexText];

    if (number != nil) {
        NSLog(@"%@ is numeric", hexText);
        //do some stuff here      
        return true;
    }

    NSLog(@"%@ is not numeric", hexText);
    //or do some more stuff here
    return false;
}

希望对您有所帮助。

最佳答案

像这样的东西会起作用:

@interface NSString (usefull_stuff)
- (BOOL) isAllDigits;
@end

@implementation NSString (usefull_stuff)

- (BOOL) isAllDigits
{
    NSCharacterSet* nonNumbers = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    NSRange r = [self rangeOfCharacterFromSet: nonNumbers];
    return r.location == NSNotFound && self.length > 0;
}

@end

然后像这样使用它:

NSString* hasOtherStuff = @"234 other stuff";
NSString* digitsOnly = @"123345999996665003030303030";

BOOL b1 = [hasOtherStuff isAllDigits];
BOOL b2 = [digitsOnly isAllDigits];

您不必像这样将功能包装在私有(private)类别扩展中,但它确实使重用变得容易..

我比其他解决方案更喜欢这个解决方案,因为它永远不会溢出一些正在通过 NSScanner 扫描的 int/float - 位数几乎可以是任何长度。

关于iphone - 如何检查 NSString 是否包含数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644004/

相关文章:

iphone - 有什么方法可以强制 UIKit 在某些设备上使用标准(不是 @2x)图像,即使 @2x 图像可用?

IOS - 如何创建模糊背景的 Facebook react 栏?

ios - 使应用程序在锁屏时显示为 iOS 8 建议的应用程序

iphone - 如何从另一个场景中弹出特定的Cocos2D场景?

ios - if(NSOrderedAscending == result) 有人能解释一下吗

iphone - 如何在 Mac 操作系统中使用 WebView 模拟 iphone safari?

ios - 在 Swift 3 中检查 launchOptions

objective-c - Core Plot 的 CPTPlotSpaceDelegate : Correct implementation of zooming and panning

iphone - 将 NSString 转换为 NSInteger

objective-c - 如何在 Objective-C 中将 unichar 值转换为 NSString?