如:
  String str = "test1234_test123_test12";
  String regex = "(test)(\d*)";意思是找出test后面接数字跟字符串,并且返回两个子串 test 跟数字现在用
while(m.find()){
   System.out.println(m.group(1)); //输出为test
   System.out.println(m.group(2)); //输出为数字
}我想把上面的test换成别的字符串,数字换成符号,比如1234-1111,123-222,12-11,也就是说数字这个不是固定。请教下,该这么实现

解决方案 »

  1.   


    楼主试试是不是想要这样的结果 String group(int i) {
    String str = "test1234_test123_test12"; 

    str = str.replaceAll("test", "test_");
    System.out.println(str);

    str = str.replaceAll("test", "abc");
    str = str.replaceAll("\\d", "111");
    System.out.println(str);

    String[] s = str.split("_"); return s[i-1];
    }
      

  2.   

    我也没看懂需求分析下你的 程序:
      String str = "test1234_test123_test12"; 
      String regex = "(test)(\d*)"; //两个子式
    java中这个(\d*) 应该写成(\\d*)啊,需要转义'\'的while(m.find()){ 
      System.out.println(m.group(1)); //输出为test ,为子式一匹配结果
      System.out.println(m.group(2)); //输出为数字 ,为子式二匹配结果
      

  3.   

    不好意思,没表达清楚,我的意思是:比如有这么个str="test1234_test123_test12"我想把他替换成 ****aaaa_****bbbcsd_****_dsdsdsd我想把test替换成****,至于test后面的数字替换的内容是动态,我可以用那个数字比如1234去查数据库找出来如果为aaaa就把1234替换成aaaa
    我现在的想法是
    我用"(test)(\\d*)" 找出了str的所有匹配像,会有test1234,test123,test12  3个匹配而每个匹配都会有test,跟后面的数字2个子匹配,我想把这两个子匹配替换掉,口齿不清,请谅解.
      

  4.   

    StringBuffer,重新生成一个string不就行了么。
      

  5.   

    猜出了楼主的问题。
    使用replaceAll(String regex, String replacement)可以将字符串中的符合regex正则表达式的字符替换成replacement。