调用方法:
dispartString(a,new char[]{'-'});  //===============方法:dispartString(String)======================
  /**
   * 使用指定的分隔符将字符串分隔为字符串数组
   * 本方法支持转义符,例如希望使用";"作为分隔符,
   * 但是在字符串中某一处的“;”希望保留,不作分隔,在此“;”加上转义符即可。
   * 在本方法中转义符是"~"。
   * 如果待分隔的字符串的最后一个字符是分隔符,则结果字符串数组的最后补上一个空字符串
   * 例如“2;1;”分隔成{"2","1",""}。(此处分隔符为“;”).
   * @param sSourceString 待分隔的字符串
   * @param separators 字符串的分隔符数组,如果值为null,则使用';'作为分隔符
   * @return 分隔结果字符串数组
   * @例如:sSourceString = "123;3247.34;dfj_rr",separator={';'}
   * 则返回值为{"123","3247.34","dfj_rr"};
   */
  //====================================================================
  public static String[] dispartString(String sSourceString,char[] separators)
  {
    if(sSourceString==null)
    {
      return new String[0];
    }
    if(separators==null)
    {
      separators = new char[]{';'};
    }
    //缓冲区
    StringBuffer sbTemp = new StringBuffer("");
    //临时存放结果
    java.util.Vector v = new java.util.Vector();
    //以"~"为转义符
    char charConv = '~';
    //当前是否是转义符
    boolean isConvChar = false;
    int nSourceLength = sSourceString.length();
    outerLoop:
    for(int i=0;i<nSourceLength;i++)
    {
      innerLoop:
      for(int j=0;j<separators.length;j++)
      {
        //当前字符是转义符,直接取下一个字符
        if(!isConvChar&&sSourceString.charAt(i)==charConv)
        {
          isConvChar = true;
          continue outerLoop;
        }
        //前面一个字符是转义符,直接将这个字符加入缓冲区,不再作是否分隔符判断
        if(isConvChar)
        {
          sbTemp.append(sSourceString.charAt(i));
          isConvChar = false;
          continue outerLoop;
        }
        if(sSourceString.charAt(i)!=separators[j])
        {
          //与分隔符比较完毕,不是分隔符,将当前字符放入缓冲区
          if(j==(separators.length-1))
          {
            sbTemp.append(sSourceString.charAt(i));
          }
          continue innerLoop;
        }
        else
        {
          //匹配成功,分离出一个单词
          v.add(new String(sbTemp));
          //清空缓冲区
          sbTemp.delete(0,sbTemp.length());
          continue outerLoop;
        }
      }
      if(i==sSourceString.length()-1)
      {
       v.add(new String(sbTemp));
      }
    }
    String[] strArrRet = new String[v.size()];
    for(int i=0;i<strArrRet.length;i++)
    {
      strArrRet[i] = (String)v.get(i);
    }
    return strArrRet;
  }

解决方案 »

  1.   

    int i=0;
    int j=0;
    while(i<a.length())
    {
    if(a.substring(i, i+1).equals("-"))
    b[j++]=a.substring(i-2, i);
    if(i==a.length()-1)
    b[j]=a.substring(i-1, i+1);
    }
      

  2.   

    给个函数:
    public boolean fbSplit(String psString, String psdelim)
    {
    int i = 0;
    StringTokenizer stkTemp = new StringTokenizer(psString, psdelim);
    String strTemp;while(stkTemp.hasMoreTokens())
    {
    strTemp = stkTemp.nextToken();
    vStrArray.add(i, strTemp);
    i = i + 1;
    }你看看吧,应该可以的。
      

  3.   

    to shenhai_csdn:
     如果a="aa"一开始就不对
      

  4.   

    String a="aa-bb-cc-dd-ee-ff-gg";
            a=a+"-";
            String[] b;
            int n = a.length();  
            int x =n/3;        
            b = new String [x];
            for (int m=0;m<x;m++)
            {
                b[m]=a.substring(0,2);
                a=a.substring(a.indexOf("-")+1,a.length());
                System.out.println(b[m]);
            }
      

  5.   

    to acefr:
      看不懂,解释一下,谢谢
      

  6.   

    不好意思, 忘了i++了;
    try again.int i=0;
    int j=0;
    while(i<a.length())
    {
    if(a.substring(i, i+1).equals("-"))
    b[j++]=a.substring(i-2, i);
    if(i==a.length()-1)
    b[j]=a.substring(i-1, i+1);i++;}
      

  7.   

    倒~~~
    你直接用好了。
    比如字符串“aa-bb-cc-dd-ee....”
    那只要
    vStrArray=new Vector();
    b=fbSplit(字符串,"分隔符");//你用的话这里是“-”号
    然后
    strTemp=(String)vStrArray.elementAt(i);//取第几个,如果全取就夹在循环里。
    vStrArray里面就是aabbccdd.....这些变量的定义和初始化你自己写吧
    可能说得不清楚,不过可以用的
      

  8.   

    声明和初始化:
    <%!
    Vector vStrArray;
    int i;
    boolean bRet;
    String strTemp;
    String strMyString;public boolean fbSplit(String psString, String psdelim)
    {
    int i = 0;
    StringTokenizer stkTemp = new StringTokenizer(psString, psdelim);
    String strTemp;while(stkTemp.hasMoreTokens())
    {
    strTemp = stkTemp.nextToken();
    vStrArray.add(i, strTemp);
    i = i + 1;
    }return true;
    }
    %>