示例1:检查字符串是否为数字
public class Numeric {
public static void main(String[] args) {
String string = "12345.15";
boolean numeric = true;
try {
Double num = Double.parseDouble(string);
} catch (NumberFormatException e) {
numeric = false;
}
if(numeric)
System.out.println(string + " is a number");
else
System.out.println(string + " is not a number");
}
}
输出
12345.15 is a number
在上面的程序中,我们有一个名为字符串的String
,其中包含要检查的字符串 。我们还有一个布尔值数字 ,用于存储最终结果是否为数字。
为了检查字符串是否仅包含数字,在try块中,我们使用Double
的parseDouble()
方法将字符串转换为Double
。
如果抛出错误(即NumberFormatException
错误),则表示字符串不是数字,并且数字设置为false
。否则,这是一个数字。
但是,如果要检查是否有多个字符串,则需要将其更改为函数。而且,逻辑基于抛出异常,这可能会非常昂贵。
相反,我们可以使用正则表达式的功能来检查字符串是否为数字,如下所示。
示例2:使用正则表达式(regex)检查字符串是否为数字
public class Numeric {
public static void main(String[] args) {
String string = "-1234.15";
boolean numeric = true;
numeric = string.matches("-?\\d+(\\.\\d+)?");
if(numeric)
System.out.println(string + " is a number");
else
System.out.println(string + " is not a number");
}
}
输出
-1234.15 is a number
在上面的程序中,我们使用正则表达式来检查字符串是否为数字,而不是使用try-catch块。这是使用String的matches()
方法完成的。
在matches()
方法中,
-
-?
允许零或更多-
字符串的负数。 -
\\d+
检查字符串必须至少包含一个或多个数字(\\d
)。 -
(\\.\\d+)?
允许零个或多个给定模式(\\.\\d+)
,其中-
\\.
检查字符串包含.
(小数点)与否 - 如果是,则应至少跟一个或多个数字
\\d+
。
-