有一个string 类型的数组随便有几个元素都可以 但是其中有数字和字母
怎么能把数字都输出来而不输出数组。(不要用啊塞可吗)

解决方案 »

  1.   

    1、可以使用jarkarta common项目,下载common-lang-2.3.jar(这个包经常被用到的,spring等开源框架都用到的)。把这个包加入classpath,使用StringUtils类,例子:String[] str = {"sdf","123","34.5","adfasd","234"};
    for(String s:str){
    if(StringUtils.isNumeric(s)){
    System.out.println(s);
    }
    }
    StringUtils.isNumeric(s),就是判断字符串s是不是数字(这里只能判断整数,浮点数不行),输出结果:123
    2342、如果要判断包括浮点数的字符串,那只好用正则表达式了[0-9]+\\.?[0-9]*例子:String[] str = {"sdf","123","34.5","adfasd","234"};
    Pattern p = Pattern.compile("[0-9]+\\.?[0-9]*");
         for(String s:str){
    Matcher m = p.matcher(s);
    if(m.matches()){
    System.out.println(s);
    }
    }
    输出结果:
    123
    34.5
    234
      

  2.   

    答:这样不行.
    如:String[] str = {"sdf",".123","-.5","adfasd","+.2e-4"};中这些合法的JAVA浮点数,你一个都识别不了啊!
      

  3.   

    多谢各位2楼
    可以使用jarkarta common项目,下载common-lang-2.3.jar(这个包经常被用到的,spring等开源框架都用到的)。 
    没用过啊在那能了解一下
      

  4.   

    还有个比较常用的方法。    private void start() {
            for (String s : str) {
                try {
                    Double.parseDouble(s);
                    System.out.println(s);
                } catch (NumberFormatException numberFormatException) {
                }
            }
        }
        private String[] str = {"sdf", ".123", "-.5", "adfasd", "+.2e-4"};
      

  5.   

    回5楼,可以去官方网站:http://commons.apache.org/lang了解6楼好办法
      

  6.   

    还是用正则表达式吧~hoho,不过六楼的办法也挺好的...写程序还是要有创意啊.