表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
public class NumericalValueString {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "+100";
char[] char1 = str1.toCharArray();
System.out.println(isNumeric(char1));
}
public static boolean isNumeric(char[] str) {
String string = String.valueOf(str); //String.valueOf(char[] str):将 char数组 str转换成字符串
return string.matches("[\\+-]?[0-9]*(\\.[0-9]*)?([eE][\\+-]?[0-9]+)?"); //正则表达式
/*
以下对正则进行解释:
[\\+\\-]? -> 正或负符号出现与否
\\d* -> 整数部分是否出现, 如-.34 或 +3.34均符合
(\\.\\d+)? -> 如果出现小数点, 那么小数点后面必须有数字, 否则一起不出现
([eE][\\+\\-]?\\d+)? -> 如果存在指数部分, 那么e或E肯定出现, +或-可以不出现, 紧接着必须跟着整数;或者整个部分都不出现
*/
}
}