怎么判断一个string
为数字
包括中文的
一千八百四十二或者壹仟贰佰或者15687
这样子
 
正则可以吗。谁可以帮忙写个。。有点迷糊。

解决方案 »

  1.   

    先把中文替换掉,然后再判断String replace = new String []{"万","千","百","十","元","角","分",//……};
    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);//里面的函数可能有误,大概就是这个思路。
      

  2.   

    效率太低了吧。
    String a = "第一千八百四十二章";
    Pattern p = Pattern.compile("^[0-9一二三四五六七八九十百千第章 ]+$");
    Matcher m = p.matcher(a);
    boolean b = m.matches();
    System.out.println("" + b);
      

  3.   

            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());输出
    true
    true
    true
    false
    true
    这种方法只是验证字符是否有效,不能验证是否是有效的数值。比如随便一个“四万万五千”
    上面那位兄弟的方法也是如此