需求:
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
分析:
true:
"+100"
"5e2"
"-123"
"3.1416"
"-1E-16"
false:
"12e"
"1a3.14"
"1.2.3"
"+-5"
"12e+4.3"
正则表达式匹配:
[]:字符集合
():分组
?:重复0~1
+:重复1~ n
*:重复0~ n
.:任意字符
\.:转义后的.
\ d:数字
public class 数值字符串 {
public static boolean isNumeric(char[] str) {
if(str == null||str.length == 0)
return false;
String s=String.valueOf(str);
return s.matches("[+-]?[0-9]*(\\.[0-9]*)?([eE][+-]?[0-9]+)?");
}
public static void main(String[] args) {
char[] s = {(char) 123e12};
System.out.println(isNumeric(s));
}
}
输出结果为: