check if the NSString is integer or double
如何检查我的NSString * val是否有整数或浮点数? 原始的方法是寻找"。" character..but是否有更优雅的方式来做到这一点?
-
stackoverflow.com/questions/565696/nsstring-is-integer可能重复
-
@alex c:不重复,只处理海报想要的部分内容。
-
@DarkDust:我明白你的意思了; 我假设OP知道他有一个数字(无论是int还是浮点数)而只是想区分。 我发布了一个处理一般案例的答案。
-
永远不要明确检查. - 许多国家/地区使用,而不是.作为小数点分隔符。
-
如何将NSString转换为NSNumber的可能重复
-
也可能是stackoverflow.com/questions/2518761/get-type-of-nsnumber的副本
首先,尝试[NSScanner scanInt:] && [NSScanner isAtEnd]。 如果它返回YES,那么你有一个int。 只要它可以将流解释为int,scanInt就会向前扫描。 如果isAtEnd为YES,则整个字符串可以解释为int(因此您有一个int)。
否则,请尝试[NSScanner scanDouble:]。 如果它返回YES,那么你有一个双倍。
如果两者都返回NO,那么你也没有。
-
嗯,唯一的问题是,例如输入1将两个方法返回YES,1.3(AFAICS)也是如此。 在第一种情况下,两者都将返回相同的解析数字,但不会返回第二种情况。 我想只需要使用scanDouble:,如果返回YES,检查double是否为"integer",例如fmod(value, 1) == 0。 如果该检查表明数字是整数,则只需将其转换为整数。
-
@DarkDust好点。 我相信你也可以在scanInt之后使用[NSScanner isAtEnd]; 如果是,那么你有一个int。