1.一字符串s前面有m个非数字字符,后面是n个数字字符;我现在要提取后面的n个数字转为一个int值public class Ugly { public static void main(String[] args) {
//字符串s前面有m个非数字字符,后面是n个数字字符;
//如: 
String s="HELLO_WORLD52";
//String s="HELLO_123WORLD52";//2.最好这样的情况个也能把52提取出来 int n=-1;

//这里帮我提取一下数字啊。
System.out.println(n);//输出52;
}
}

解决方案 »

  1.   


    public static void main(String[] args) {
    Test t = new Test();
    String s = "HELLO_WORLD52ADK333ASD22", s1 = "";
    String[] str = s.split("\\D");
    int n = 0;
    for (String ss : str) {
    s1 += ss;
    }
    n = Integer.parseInt(s1);
    System.out.println(n);
    }
      

  2.   


        public static void main(String[] args){
            String s="HELLO_WORLD52"; 
            Pattern p = Pattern.compile("\\D*?(\\d+)");
            Matcher m = p.matcher(s1);
            m.find();        
            System.out.println(m.group(1));
        }这种方法第二个取不出来,我再试试
      

  3.   

    改进了一个    public static void main(String[] args){
                    String s="HELLO_WORLD52"; 
            String s1="HELLO_123WORLD52dad343";//2.
            Pattern p = Pattern.compile("\\D*?(\\d+)");
            Matcher m = p.matcher(s1);
            while( m.find()){       
                System.out.println(m.group(1));
            }
        }
      

  4.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegexTest { public static Integer test(String str) {
    if (str == null || str.trim().length() == 0) return null;
    final String REGEX = "^.*?(-?\\d+)$";
    Pattern p = Pattern.compile(REGEX, Pattern.DOTALL);  //要想效率高点把它静态化
    Matcher m = p.matcher(str);
    if (!m.matches()) return null;
    return new Integer(m.group(1));
    } public static void main(String[] args) {
    System.out.println(test(null));
    System.out.println(test("   "));
    System.out.println(test("dafsakgjr123faefafe"));
    System.out.println(test("125455"));
    System.out.println(test("\t  \n -10"));
    System.out.println(test("HELLO_WORLD52"));
    System.out.println(test("HELLO_123WORLD52"));
    }}
    输出: 
    null
    null
    null
    125455
    -10
    52
    52
      

  5.   

    import java.util.regex.*;public class Regular {
    public static void main(String[] args) {
    String s = "HelloWord345andjava34";
    Pattern p = Pattern.compile("[\\d]+");
    Matcher m = p.matcher(s);
    while(m.find()) {
    System.out.println(m.group());
    }
    }
    }
      

  6.   

    其实有很多方法。1. 可以写个判定是数字的函数,'0'-'9'
    2. 利用java的正则表达式应该是最直接的,楼上正解。
    3. java也有Character.isDigital之类来判定字符是否数字之类的函数,读取连续的就可以了。4.javacc等等都可以的。建议采用楼上的。
      

  7.   


    String str="abcd34343bbbc123a3434b343";
    char[] c=str.toCharArray();
    String s="";
    int num=0;
    for(int i=0;i<c.length;i++)
    {
    if(c[i]>47 && c[i]<58)
    {
    if(num ==0 || i-num==1)
    {
    s+=c[i];
    num=i;
    }
    else
    {
    System.out.println(s);
    s=String.valueOf(c[i]);
    num=i;
    }
    }
    }
    System.out.println(s);