有一这样的字符串: 
32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg 需要截取所有A和B间的内容,请问该如何处理,最好能符上相关代码 

解决方案 »

  1.   

    用str.split()配合正则拆解...某正则小白飘过...
      

  2.   

    试了试,似乎没问题喵~~~`public static void main(String[] args)
    {
      String str = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg";
      str = str.substring(str.indexOf("A") + 1, str.lastIndexOf("B"));
      String[] strs = str.split("B.*?A");
      System.out.println(str);
      for (int i = 0; i < strs.length; i++) 
      {
        System.out.println(strs[i]);
      }
    }
      

  3.   

    先用substring()把脑袋和尾巴吃了喵...
    然后用split()把B和A之间的吃了喵...
    最后split()返回的数组就是答案了喵...
      

  4.   

    String Content = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg";
    Pattern p =  Pattern.compile("A[^A]+B",Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
    Matcher ma = p.matcher(Content);
    while(ma.find()
    Content=ma.replaceFirst(SelectValue);
      

  5.   

    String str = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg";
    String[] arr = str.split("(^|B)[^B]+?A|B[^A]+?(A|$)");
    for(int i=0;i<arr.length;i++)
    System.out.println(arr[i]);
      

  6.   

    如果字符串32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg中,每个B的后面,下一个A的前面还有B,但还是想要之前的结果,由改如何处理呢?新的字符串如下:
    32FAfetB1B243A243BB3457AfwBgrB4AewjB3gB6hhAddB345BgAdefBB34tg
      

  7.   

    http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
      

  8.   

    String[] arr = str.split("(^|B)[^B]+?(A|$)");
    这样吧.
      

  9.   

    如果字符串32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg中,每个B的后面,下一个A的前面还有B,但还是想要之前的结果,由改如何处理呢?新的字符串如下: 
    32FAfetB1B243A243BB3457AfwBgrB4AewjB3gB6hhAddB345BgAdefBB34tg
    _________________________________________要求不明确!
    例如:第一组是fet呢?还是fetB1?
      

  10.   

    ArrayList resultList=new ArrayList();
    String str="32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg";
    int index_A=str.indexOf("A");
    int index_B=str.indexOf("B");
    String remainStr=str;
    while(index_A!=-1&&index_B!=-1){
    if(index_B<index_A){
    String strSub=remainStr.substring(index_A);
    index_A=0;
    index_B=remainStr.indexOf("B");
    continue;
    }
    String strSub=remainStr.substring(index_A+1,index_B);
    resultList.add(strSub);
    remainStr=remainStr.substring(index_B+1);
    index_A=remainStr.indexOf("A");
    index_B=remainStr.indexOf("B");
    }结果存在resultList里面。比较烦,应该有更好的办法。
      

  11.   

    正则似乎不快....我正则不好,都是能不用就不用的...
    StringBuffer配合其方法应该是最好的...不过复杂点的判断都离不开正则,15楼的最简洁,继续膜拜喵~~~~
      

  12.   

    String[]   arr   =   str.split("(^ ¦B)[^B]+?(A ¦$)"); 
    支持~`
      

  13.   

    正解如下:        
                    String str = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tbg";
    str=str.replaceAll("^[\\w&&[^B]]*[A]|[B][\\w&&[^B]]*$", "");//去除头尾字符
    System.out.println(str);
    String strs[] = str.split("[B][\\w&&[^B]]*[A]");            //截取A B 中间字符
    System.out.println(strs.length);
    for(int i=0;i<strs.length;i++){
    System.out.println(strs[i]);
    }