比如说我有这么一个字符串:dlsafl12346
那么请问我使用什么方法可以获取字符串中的数字?

解决方案 »

  1.   


    public class MixedStringParser {
        static String parseNumber(String mixed) {
            byte[] data = mixed.getBytes();
            StringBuffer sb = new StringBuffer();
            for (int i=0; i<data.length; i++) {
                if (data[i]>0x2F && data[i]<0x3A) {
                    sb.append((char)data[i]);
                }
            }        return sb.toString();
        }    public static void main(String[] args) {
            if (args.length != 1) {
                System.out.println("usage: java MixedStringParser <mixed number>");
            }
            String s = parseNumber(args[0]);
            System.out.println(s);
            System.out.println(Integer.parseInt(s));
        }
    }
      

  2.   

    str.replaceAll("\\D+"," ").split(" ");第一个可能是空的,判断下既可
      

  3.   

    public class test
    {
    public static void main(String[] args){
    String str="dlsafl12346";
    System.out.println(str.replaceAll("\\D+"," "));
    }
    };
      

  4.   

    public class MixedStringParser {
        static String parseNumber(String mixed) {
            byte[] data = mixed.getBytes();
            StringBuffer sb = new StringBuffer();
            for (int i=0; i<data.length; i++) {
                if (data[i]>0x2F && data[i]<0x3A) {
                    sb.append((char)data[i]);
                }
            }        return sb.toString();
        }    public static void main(String[] args) {
            if (args.length != 1) {
                System.out.println("usage: java MixedStringParser <mixed number>");
            }        String s;            long useRegex = System.nanoTime();
            s = args[0].replaceAll("\\D", "");
            useRegex = System.nanoTime() - useRegex;        System.out.println(s);        long useChar = System.nanoTime();
            s = parseNumber(args[0]);
            useChar = System.nanoTime() - useChar;        System.out.println(s);        System.out.println("useChar:\t" + useChar);
            System.out.println("useRegex:\t" + useRegex);
        }
    }结果:
    ---------- java ----------
    12345
    12345
    useChar: 343899
    useRegex: 3010718
    Normal Termination
    输出完成(耗费 0 秒)。