【问题标题】:check if the NSString is integer or double检查 NSString 是整数还是双精度
【发布时间】:2011-11-09 15:30:18
【问题描述】:

如何检查我拥有的 NSString *val 是否有 Integer 或 float ?原始方法是寻找“。”。字符..但是有没有更优雅的方式来做到这一点?

【问题讨论】:

标签: objective-c nsstring integer double


【解决方案1】:

首先,尝试[NSScanner scanInt:]&& [NSScanner isAtEnd]。如果它返回YES,那么你有一个int。 scanInt 将向前扫描,只要它可以将流解释为 int。如果isAtEnd 是YES,那么整个字符串可以被解释为一个int(所以你有一个int)。

否则,请尝试[NSScanner scanDouble:]。如果它返回YES,那么你有一个double。

如果两者都返回NO,那么你也没有。

【讨论】:

  • 嗯,唯一的问题是,例如输入 1 将有两种方法返回 YES1.3 (AFAICS) 也是如此。在第一种情况下,两者都将返回相同的解析数字,但在第二种情况下不会。我想必须只使用scanDouble:,如果它返回YES,请检查双精度是否为“整数”,例如使用fmod(value, 1) == 0。如果该检查显示数字是整数,只需将其转换为整数。
  • @DarkDust 好点。我相信你也可以在scanInt之后使用[NSScanner isAtEnd];如果是,那么你有一个 int。
猜你喜欢
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
相关资源
最近更新 更多