在解析字符串之前,如何检查字符串是否为数字?
这通常是通过一个简单的用户定义函数(即Roll-your-own“isnumeric”函数)来完成的。
类似于:
public static boolean isNumeric(String str) {
try {
Double.parseDouble(str);
return true;
} catch(NumberFormatException e){
return false;
}
}
但是,如果您多次调用该函数,并且您希望许多检查由于不是数字而失败,那么该机制的性能将不会很好,因为您依赖于为每次失败抛出的异常,这是一个相当昂贵的操作。
另一种方法可能是使用正则表达式来检查是否为数字:
public static boolean isNumeric(String str) {
return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal.
}
但是,要小心使用上面的正则表达式机制,因为如果您使用的是非阿拉伯数字(即0到9以外的数字),它将失败。这是因为正则表达式的“\d”部分将只匹配[0-9],并且实际上在国际上并不知道数字。(感谢OregonGhost指出这一点!)
甚至还有一种选择是使用Java内置的Java.text.NumberFormat对象来查看解析字符串后解析器的位置是否在字符串的末尾。如果是,我们可以假设整个字符串都是数值:
public static boolean isNumeric(String str) {
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition pos = new ParsePosition(0);
formatter.parse(str, pos);
return str.length() == pos.getIndex();
}
使用Apache Commons Lang 3.5及以上版本:numberutils.iscreatable
或stringutils.isnumeric
。
使用Apache Commons Lang 3.4及以下版本:numberutils.isnumber
或stringutils.isnumberic
。
还可以使用stringutils.isNumericSpace
,它为空字符串返回true
并忽略字符串中的内部空格。另一种方法是使用numberutils.isparsable
,它基本上根据Java检查数字是否可解析。(链接的javadocs包含每个方法的详细示例。)
问题内容: 在解析字符串之前,如何检查字符串是否为数字? java 字符串 数字 问题答案: 使用及更高版本:或。 使用Apache Commons Lang 3.4及以下版本:或。 你还可以使用返回true空字符串,并忽略字符串中的内部空格。另一种方法是使用根据Java基本检查数字是否可解析的方法。(链接的javadocs包含每种方法的详细示例。)
问题内容: 如何在Java中检查字符串是否为数字? 问题答案: 使用Apache Commons Lang 3.5及更高版本:NumberUtils.isCreatable或StringUtils.isNumeric。 使用Apache Commons Lang 3.4及以下版本:NumberUtils.isNumber或StringUtils.isNumeric。 你还可以使用StringUti
问题内容: 在Java forString类中,有一个称为matchs的方法,该方法如何使用正则表达式检查我的字符串是否只有数字。我尝试了以下示例,但它们均使我返回了false。 问题答案: 尝试 要么 按照Java 正则表达式 ,其 含义是“一次或多次”,并且其含义是“数字”。 注意:“双反斜杠”是一个 转义序列, 用于获取单个反斜杠-因此,在Java字符串中会提供实际结果: 参考文献: Jav
在Java for String类中有一个叫做matches的方法,如何使用这个方法使用正则表达式来检查我的字符串是否只有数字。我尝试了下面的例子,但他们都返回我的结果是假的。
问题内容: 检查字符串是否可以在Python中表示为数字的最佳方法是什么? 我目前拥有的功能是: 它不仅丑陋而且缓慢,看起来笨拙。但是我还没有找到更好的方法,因为调用函数甚至更糟。 问题答案: 不仅丑陋而且缓慢 我都对此表示怀疑。 正则表达式或其他字符串解析方法将更难看,更慢。 我不确定任何事情都可以比上述速度更快。它调用该函数并返回。不会带来太多的开销,因为最常见的异常是在没有大量搜索堆栈帧的情
我有一个gpa程序,它使用方法,该方法比较字母“a”和用户输入的两个字符串,然后检查它们是否输入“a”。但现在我想添加一个异常,该异常在输入数字时会执行错误消息。我想让程序意识到整数输入与字符串不一样,并给出一个错误消息。我可以使用哪些方法来比较类型字符串变量和int类型的输入,并抛出异常?