我有一个字符串String s = "123abc";
请问怎样能够判断出字符串里数字的部分和字母的部分,并且拆分成"123"和"abc"?谢谢~

解决方案 »

  1.   

    笨点的方法:循环判断每个字符,用isDigit()方法
      

  2.   

    把每一个字符取出来然后((int)s.charAt(index))> (int)'a'//a is 65
    ((int)s.charAt(index))< (int)'9'//
      

  3.   

    请看代码,不用解释了吧:package a;import java.util.regex.Matcher;
    import java.util.regex.Pattern;/*
     * 拆分字符串中的字母和数字
     */
    public class test_ChaiFen {
    public static void main(String args[]){
    String newString = "aasdf23241asdfa234adsfas";
    //先是为正则表达式解决的,写麻烦了
                    /*String reg = "[A-Za-z]";
    String reg_ = "[0-9]";

    Pattern p = Pattern.compile("[A-Za-z]");
    Pattern p1 = Pattern.compile(reg_);

    Matcher m = p.matcher(newString);
    Matcher m_ = p1.matcher(newString);

    StringBuffer s = new StringBuffer();
    StringBuffer s_ = new StringBuffer();
    while(m.find()){
    s.append(m.group(0));
    // s_.append(m.group(0));
    }
    while(m_.find()){
    s_.append(m_.group(0));
    }
    System.out.println(s);
    System.out.println(s_);*/ //下面的方法应该简便一点
    StringBuffer s1 = new StringBuffer();
    StringBuffer s2 = new StringBuffer();
    char c[] = newString.toCharArray();
    for(int i = 0 ; i < c.length ; i++){
    if((int)c[i] < 65){
    s1.append(c[i]);
    }
    if((int)c[i] >= 65 && (int)c[i] <127){
    s2.append(c[i]);
    }
    }
    System.out.println(s1);
    System.out.println(s2);
    }}
      

  4.   

    这个更好!你直接复制用吧!
            String ss = "12345abc";
        
    String[] sss1 = ss.split("[a-z]");
    String[] sss2 = ss.split("[0-9]+");

    System.out.println(sss1[0]);
    System.out.println(sss2[1]);