gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 07:49:32 30 4
gpt4 key购买 nike

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

我一直在四处寻找,但发现很难找到符合我想做的事情的任何东西。我看过 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com