我一些字符串,是由正整数部分跟英文字母组成,正整数在前,英文字母在后,
String a= 1self;
String b= 432all;
String c = 22branch;
....
能把每一个字符串分割成正整数一个,英文字母一个么,
intger a = 1
String a2 = self
intger b1 = 432
String = all
....

解决方案 »

  1.   

    感觉着个不能用split,看别人的回答吧
      

  2.   

    public static void main(String[] args) {
    String str = "22branch";
    Pattern pattern = Pattern.compile("^(\\d+)([a-zA-Z]+)");
    Matcher matcher = pattern.matcher(str);
    if(matcher.matches()){
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
    }
    }
      

  3.   

    String source = "aa22branch"; String reg = "(\\d+|[a-zA-Z]+|[\\u4e00-\\u9fa5]+)";
    Matcher m = Pattern.compile(reg).matcher(source);
    while (m.find()) {
    String value = m.group();
    System.out.println(value);
    }
      

  4.   

    我有个疑问啊,正则表达式写出
    String reg = "(\\d+|[a-zA-Z]+)";也是可以的,你写的这个[\\u4e00-\\u9fa5]+是什么意思啊?能讲一下吗。
      

  5.   

    [\\u4e00-\\u9fa5]+
    这是ASCII码的范围,匹配所有中文字符,+的意思就是匹配至少一个中文字符。
      

  6.   

    [\\u4e00-\\u9fa5]+
    这是ASCII码的范围,匹配所有中文字符,+的意思就是匹配至少一个中文字符。哦,但是我在字符串中加入中文字符,结果并不能把中文挑出来啊。那加[\\u4e00-\\u9fa5]+好像不起作用啊。
      

  7.   

    [\\u4e00-\\u9fa5]+
    这是ASCII码的范围,匹配所有中文字符,+的意思就是匹配至少一个中文字符。哦,不好意思,我刚刚测试错了,这样是可以挑出中文的,谢谢了,哈哈。
      

  8.   

    可以啊!用split()这个函数就能分隔了!
      

  9.   

    split()方法总要消除掉用以分隔的字符的,即括号里面的字符串会被删除,得到一个字符串数组。
      

  10.   

    String numberString = input.split("[\\d]+")[0];
    String charString = input.subString(numberString.length() - 1);
    手上没有Java环境,试试看