大神们。。求帮助 怎么判断一个string为数字包括中文的一千八百四十二或者壹仟贰佰或者15687这样子 正则可以吗。谁可以帮忙写个。。有点迷糊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先把中文替换掉,然后再判断String replace = new String []{"万","千","百","十","元","角","分",//……};String chinaNum = new String[]{"一","二","三","四","五","六","七","八","九"};//要查找的StringString check;for(int i=0;i<replace.length;i++) check.replaceString(replace[i],"");for(int i=0;i<chinaNum.length;i++) check.replaceString(chinaNum[i],i);//这时试图将其转换成double, 如果OK,说明是数字double num= Double.valueOf(check);//里面的函数可能有误,大概就是这个思路。 效率太低了吧。 String a = "第一千八百四十二章"; Pattern p = Pattern.compile("^[0-9一二三四五六七八九十百千第章 ]+$"); Matcher m = p.matcher(a); boolean b = m.matches(); System.out.println("" + b); Pattern pattern=Pattern.compile("[零一二三四五六七八九十百千万亿]+|[零壹贰叁肆伍陆柒捌玖拾佰仟万亿]+|[\\d]+"); Matcher matcher=pattern.matcher("一千八百四十二"); System.out.println(matcher.matches()); matcher=pattern.matcher("壹仟贰佰"); System.out.println(matcher.matches()); matcher=pattern.matcher("15687"); System.out.println(matcher.matches()); matcher=pattern.matcher("一23"); System.out.println(matcher.matches()); matcher=pattern.matcher("四万万五千"); System.out.println(matcher.matches());输出truetruetruefalsetrue这种方法只是验证字符是否有效,不能验证是否是有效的数值。比如随便一个“四万万五千”上面那位兄弟的方法也是如此 高手才进来: 求一个复杂算法 java里的时间问题 请问静态函数中的变量和方法是不是线程安全的 java连接sql时出现错 请问各位鼠标右键时间怎么写????在线等,解决马上加分 有开发过即时通讯的项目的吗?有几个问题想请教!很急!谢谢! 一个人初学java半天,有点无聊和累了,请人帮我看看程序(简单) 关于继承的几点困惑 软件人生道路上的烦恼 jbuilder7中一个简单的问题 算法设计 在JAVA中怎么用 MessageDigest实现MD5的加密?
String chinaNum = new String[]{"一","二","三","四","五","六","七","八","九"};
//要查找的String
String check;
for(int i=0;i<replace.length;i++) check.replaceString(replace[i],"");
for(int i=0;i<chinaNum.length;i++) check.replaceString(chinaNum[i],i);
//这时试图将其转换成double, 如果OK,说明是数字
double num= Double.valueOf(check);//里面的函数可能有误,大概就是这个思路。
String a = "第一千八百四十二章";
Pattern p = Pattern.compile("^[0-9一二三四五六七八九十百千第章 ]+$");
Matcher m = p.matcher(a);
boolean b = m.matches();
System.out.println("" + b);
System.out.println(matcher.matches()); matcher=pattern.matcher("壹仟贰佰");
System.out.println(matcher.matches()); matcher=pattern.matcher("15687");
System.out.println(matcher.matches()); matcher=pattern.matcher("一23");
System.out.println(matcher.matches()); matcher=pattern.matcher("四万万五千");
System.out.println(matcher.matches());输出
true
true
true
false
true
这种方法只是验证字符是否有效,不能验证是否是有效的数值。比如随便一个“四万万五千”
上面那位兄弟的方法也是如此