日期:2014-05-20  浏览次数:20961 次

怎么判断一个字符串(String)所包含的全部字符是数字?
怎么判断一个字符串(String)所包含的全部字符是数字?
这个数字可能含小数点!

------解决方案--------------------
转换为字符数组后判断
------解决方案--------------------
try{
double dd = Double.parseDouble(str);
}catch(Exception e){
//非数字字符
}
------解决方案--------------------
1楼说滴方法可行,我感觉不要用try{}这种,开销大
------解决方案--------------------
可以试试用正则表达式

String in= "10.1 ";
String patternStr= "\\d+\\.?\\d* ";
Pattern p=Pattern.compile(patternStr);
Matcher m=p.matcher(in);
boolean b=m.matches();
System.out.println(b);
------解决方案--------------------
String str1= "22566.22222563 ";
String str2= "22556622 ";
final String regexpPP = "^\\d+([\\.]?\\d+)?$ ";
Pattern pattern = Pattern.compile(regexpPP);
Matcher matcher = pattern.matcher(str1);
if(matcher.find()){
System.out.println(matcher.group());
}
matcher = pattern.matcher(str2);
if(matcher.find()){
System.out.println(matcher.group());
}
------解决方案--------------------
Double.parseDouble()好
------解决方案--------------------
正则最好

Double.parseDouble()要考虑Double的范围,如果超长的串,就会出问题
------解决方案--------------------
正则表达式是王道
------解决方案--------------------
String str1= "22566.22222563 ";
String str2= "22556622 ";
final String regexpPP = "^\\d+([\\.]?\\d+)?$ ";
Pattern pattern = Pattern.compile(regexpPP);
Matcher matcher = pattern.matcher(str1);
if(matcher.find()){
System.out.println(matcher.group());
}
matcher = pattern.matcher(str2);
if(matcher.find()){
System.out.println(matcher.group());
}
--------------------------
正则表达式不会用啊谁能帮我解释下这段代码都是怎么匹配的可以么?谢谢啊
还有 提示说 The method compile(String) is undefined for the type Pattern

The method mather(String) is undefined for the type Pattern
是怎么回事呀 我引入的import java.util.regex.Matcher;是这个包 还用别的么 谢谢!
------解决方案--------------------
应该用正则表达是比较好!
------解决方案--------------------
直接匹配就可以了,用不着使用 Pattern 和 Matcher 类了。

String str1= "22566.22222563 ";
String str2= "22556622 ";
String regExp = "\\d+\\.?\\d* ";
System.out.println(str1.matches(regExp));
System.out.println(str2.matches(regExp));
------解决方案--------------------
用正则还要判断负数的情况吧。如果要判断几次的话,还不如用try一下Double.parseDouble()
------解决方案--------------------
正则表达式:
.:通配符,匹配所有的单个字符
+:要求前面的字符出现一次或多次
*:要求前面的字符出现0次或多次
?:这个字符允许前面的字符是可选的
^:表示开始
$:表示结束
\转意
\d表示数字
eg:浮点数的正则表达式为/^-?\d+(\.\d+)?$/
解释:/。。。/表示这是一个正则表达式
^表示开始
$表示结束
-?表示负号可有可无
\d+一个或多个数字
(。。。)?表示括号内的内容可选
括号内的就不用解释了

事实上如果不用开始结束符的话这样的字符串也将是匹配的
dddfdjk-2.3hjdhjf
因为它含有满足的子串