有一个字符串类似于:String str="hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#"
其中$和%为分隔符,#为结束符。
我想从该字符串中提取子串如:hd0,jfsfi,jjaio等进行处理。
问:怎么拆分处理这个字符串速度最快?

解决方案 »

  1.   

    调用 字符串的拆分方法 split 返回一个字符串数组 String[] strSplit = str.split("$");
    在对数组处理
      

  2.   

    哦,谢谢提示,不过初学java,不太理解正则表达式。我的字符串里有多个分隔符号,但是split方法只提供一个字符串参数,可不可以这样?
    String[] strSplit = str.split("$%#");另外,对于这样的字符串:"$sjlf$%$%#",该方法又是怎么处理的?
      

  3.   

    StringTokenizer st =new StringTokenizer("hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#", "%$#");

    while(st.hasMoreElements())
    {
    System.out.println(st.nextElement());
    }
      

  4.   

    一楼的方法中存在错误,“$”是正则表达式的专用符号需要转义改为“\\$”。
    二楼的方法也不好,要分好几次转,这样会产生很多的数组。我的建议代码:String str="hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#";
    String[] s = str.split("\\$|%|#$");
    for(String t : s) {
      System.out.println(t);
    }
      

  5.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    String str="hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#";
    String[] s = str.split("\\$|%|#");
    for(int i=0;i<s.length;i++) {
    System.out.println(s[i]);
    }
    Pattern p = Pattern.compile("(\\w*)\\$*|(\\w*)%*|(\\w*)#*");
    Matcher m = p.matcher("hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#");
    while(m.find())
    System.out.println(m.group(1));
    }}
    上段代码两种方式都有
      

  6.   

    楼上这段代码: for(String t : s) {
      System.out.println(t);
    低版本不兼容,我觉得用for(int i=0;i<s.length;i++) {
    System.out.println(s[i]);并不比楼上的差多少
      

  7.   

    str.substring(0, str.indexOf("#")).split("\\$|\\%");
      

  8.   

    感谢这么多兄弟的参与,我很知足。
    其实我也知道拆分并不难,只是想找一种速度最快的方法,因为拆分语句要在我的程序里一直频繁的执行。有时候我也怀疑split的效率...
      

  9.   

    LS兄弟艘说的差不多了  不说了JF