【问题标题】:What is a better way to check if a string is an integer on iPhone?在 iPhone 上检查字符串是否为整数的更好方法是什么?
【发布时间】:2011-06-19 00:21:25
【问题描述】:

以下代码将识别字符串是否为整数 - 即字符串仅包含数字。但是,我讨厌这段代码。有什么更好的方法?

NSString *mightBeAnInteger = fooString;
int intValue = [fooString intValue];
if (intValue > 0
    && [[NSString stringWithFormat:@"%d",intValue] isEqualToString:mightBeAnInteger]) {
  NSLog(@"mightBeAnInteger is an integer");
}

【问题讨论】:

标签: iphone objective-c cocoa-touch


【解决方案1】:

如果字符串中只有数字字符,[fooString rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location == NSNotFound 将为 YES。

请注意,这不会捕获负数,因此您必须添加负号(可能通过获取 mutableCopy 并添加符号)。

【讨论】:

  • 很好的答案,但您可以使用自定义 NSCharacterSet 构造函数 characterSetWithCharactersInString: 传入 0-9 + "." &“-”。
  • 没有句号 - 海报需要整数。就我个人而言,我宁愿添加符号也不愿使用字符串构造函数,但这就是我!
  • 此答案不包括以下情况:@"1111-1111" 这不是有效的 int。最好检查 [fooString intValue]
【解决方案2】:
-(BOOL) stringIsNumeric:(NSString *) str {
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    NSNumber *number = [formatter numberFromString:str];
    [formatter release];
    return !!number; // If the string is not numeric, number will be nil
}

来源:Objective c: Check if integer/int/number

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多