给出一个不固定的字符串  含有数字(有会带小数点)加字母要求分隔出来数字部分  和字母部分、貌似要正则、不太会喔、String str = "0.12a";结果:
 
  0.12      a 如果碰到数字夹字母情况  String str = "0.12a0.12b";结果: 0.120.12   ab

解决方案 »

  1.   

    System.out.println("0.12a0.12b".replaceAll("[a-z]", ""));System.out.println("0.12a0.12b".replaceAll("[0-9]", "").replaceAll("\\.", ""));
      

  2.   

    也可以这样!
    System.out.println("0.12a0.12b".replaceAll("[a-z]", ""));
    System.out.println("0.12a0.12b".replaceAll("[^a-z]", ""));
      

  3.   

    把每个字节都拿出来判断ascii码也可以来区分
      

  4.   

    我刚才也写了一个小例子,不过没有正则表达式来的简单.public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    String number = ".0123456789";
    String str = "0.12abc1.1";
    char[] chars = str.toCharArray();
    String numberPart = "";
    String stringPart = "";
    for(int i = 0; i < chars.length; i++) {
    char c = chars[i];
    if(number.indexOf(String.valueOf(c)) >= 0) {
    numberPart += c;
    } else {
    stringPart += c;
    }
    }
    System.out.println("===NumberPart===" + numberPart);
    System.out.println("===stringPart===" + stringPart);
    }
    }
      

  5.   

    #1和#4两位都 可以、每人各50分、现在改了需求、数字加字符加数字的、 从左往右查碰到字符 前面数字算一组  字符到最后算一组、String ex = " 0.12a1248bawd";结果分隔后是numb = 0.12  和 str = a1248bawd 这样的、
    String numb = "";
    String string = "";
    Pattern pat = Pattern.compile("[^\\d+(.\\d*)?]");
      Matcher matcher=pat.matcher(ex);
      if(matcher.find()){
       String str = matcher.group();//第一个查询到的字符
       numb = ex.substring(0,ex.indexOf(str));
       string = ex.substring(ex.indexOf(str),ex.length());
      }
    谢谢各位