String ="A123456789D A2345D A333445D A2323D........"( 后面还有多少个不知道。但是都是A 开头D 结尾的)
java 中怎么截取出上面字符串中的A的后面D的前面,而且A和D中间的字符长度是不规律的?????大家谁懂得?

解决方案 »

  1.   

    正则表达式具体参考API, 我正则表达式菜菜...
      

  2.   

    Matcher m=Pattern.compile("A.*?D").matcher(s);while(m.find()){
      System.out.println(m.group());
    }
      

  3.   

    Matcher m=Pattern.compile("A(.*?)D").matcher(s);while(m.find()){
      System.out.println(m.group());
      System.out.println(m.group(1));
    }
      

  4.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;/**
     *
     * @author zhappy
     */
    public class test {
        
        /** Creates a new instance of test */
        public test() {
        }
        
        public static void main(String args[]) {
            String tmp = "A123456789D A2345D A333445D A2323D ";
            String temp[] = tmp.split("\\s");
            String reg = "\\d{1,}";
            for (int i=0;i<temp.length;i++) {
                Pattern p = Pattern.compile(reg);
                Matcher m = p.matcher(temp[i]);
                if (m.find()) {
                    System.out.println(m.group());
                }
            }
        }
        
    }
      

  5.   

    dreamover(梦醒了〖http://hellfire.cn〗) 老大的比我的好,学习!
      

  6.   

    利用StringTokenizer,以下程序刚刚通过import java.util.*;
    public class StrToken{
    public static void main(String args[]){
      String str="A123456789D A2345D A333445D A2323D";  //通过StringTokenizer构造出Vector
      String currStr="";
      Vector vt=new Vector();
      StringTokenizer st=new StringTokenizer(str);
      while(st.hasMoreTokens()){
         currStr=new String(st.nextToken());
         vt.addElement(currStr);
    }
    //打印
    print(vt);
    }public static void print(Vector v){
      String strEle="";
      for(int i=0;i<v.size();i++){
          strEle=(String)v.elementAt(i);
          if(strEle.length()>2)
            System.out.println(strEle.substring(1,strEle.length()-1));
      }}
    }编译后输入
    123456789
    2345
    333445
    2323
      

  7.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;/**
     *
     * @author zhappy
     */
    public class test {
        
        /** Creates a new instance of test */
        public test() {
        }
        
        public static void main(String args[]) {
            String s = "A123456789D A2345D A333445D A2323D ";
            Matcher m = Pattern.compile("A(\\d*?)D").matcher(s);
            
            while(m.find()){
                //System.out.println(m.group());
                System.out.println(m.group(1));
            }
        }
        
    }init:
    deps-jar:
    Compiling 1 source file to D:\java\nbapp\db2test\build\classes
    compile:
    run:
    123456789
    2345
    333445
    2323
    生成成功(总时间:0 秒)利用正则表达式简单多了,也是编译通过的
      

  8.   

    但是。如果字符串是两位开头。三位结尾的呢
    例如
    String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的)
      

  9.   

    import java.util.*;
    public class StrToken{
    public static void main(String args[]){
      String str="A123456789D A2345D A333445D A2323D";  //通过StringTokenizer构造出Vector
      String currStr="";
      Vector vt=new Vector();
      StringTokenizer st=new StringTokenizer(str);
      while(st.hasMoreTokens()){
         currStr=new String(st.nextToken());
         vt.addElement(currStr);
    }
    //打印
    print(vt);
    }public static void print(Vector v){
      String strEle="";
      for(int i=0;i<v.size();i++){
          strEle=(String)v.elementAt(i);
          if(strEle.length()>5)
            System.out.println(strEle.substring(2,strEle.length()-3));
      }}
    }
      

  10.   

    但是。如果字符串是两位开头。三位结尾的呢
    例如
    String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的)
      

  11.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;/**
     *
     * @author zhappy
     */
    public class test {
        
        /** Creates a new instance of test */
        public test() {
        }
        
        public static void main(String args[]) {
            String s = "AB123456789CDE AB2345CDE AB333445CDE AB2323CDE";
            //后面还有多少个不知道。但是都是AB 开头CDE 结尾的
            Matcher m = Pattern.compile("AB(\\d*?)CDE").matcher(s);
            
            while(m.find()){
                //System.out.println(m.group());
                System.out.println(m.group(1));
            }
        }
        
    }
      

  12.   

    //测试
    public static void main(String[] args){
    String str ="A123456789D A2345D A333445D";
    String[] s = str.split(" ");
    for(int i = 0; i < s.length; i++){
    System.out.println(s[i].substring(1,s[i].length() - 1));
    }
    }
      

  13.   

    但是。如果字符串是两位开头。三位结尾的呢
    例如
    String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的)====================================
    那就用正则表达式吧!