我在完成一个动态构造字符串的功能时,思路好混乱啊!具体的功能需求是这样的:
从外界传进一个以'/'分割的字符串,我需要将其转换成指定长度的字符串数组。如果当前字符串长度越界则将其放入下一个字符串中。
举例如下:
String test = "Eugene/MichaelJackson/Eminem/Limpbizkit/Linkinpark-LPU/Five";
我设每一个完成的字符串元素长度为22。则最后处理完的字符串数组类似这样:
results[0]="Eugene";                 //长度超过22不能拼接
results[1]="/MichaelJackson/Eminem"; //长度等于22可以拼接
results[2]="/Limpbizkit"; 
results[3]="/Linkinpark-LPU/Five";
希望哪位高人能够指点迷津,给一点思路!谢谢!
我现在的问题就是集中在如何判断长度和拼接。有点混乱!

解决方案 »

  1.   

    results[0]="Eugene"; //长度超过22不能拼接 
    这句什么意思"Eugene"的长度怎么超过22了?有点晕
      

  2.   

    o !是"/Eugene/MichaelJackson"的长度超过22,所以不能拼接。
    这个东西主要就是为了防治字符串分割后可能产生的断句情况。
      

  3.   

    String test = "Eugene/MichaelJackson/Eminem/Limpbizkit/Linkinpark-LPU/Five";
    String[] result=test.split("/");
    if(test.startsWith("/"))
             result[0]="/"+result[0];
    for(int i=1;i<result.length;i++)
    result[i]="/"+result[i];
    ArrayList<String>res=new ArrayList<String>();
    StringBuffer sb=new StringBuffer();//缓冲
    for(int i=0;i<result.length;i++)
    {
    if(result[i].length()+sb.length()>=21)//如果太加一起长度太长,
                                        //则将缓冲内容添加到结果中,并清空缓冲
    {
    res.add(sb.toString());
    sb.setLength(0);
    }
             //将当前内容加入到缓冲中
    sb.append(result[i]);
    }
    //如果缓冲不为空,则添加最后内容到结果中
    if(sb.length()!=0)
    res.add(sb.toString());
    //显示测试结果
    for(int i=0;i<res.size();i++)
    System.out.println(res.get(i));
      

  4.   

    这个算法我想解决的问题就是以"/"分隔的字符串,通过重新拼接后可能产生的断句问题。
    比如说"/Eugene/MichaelJackson",经过拼装后,可能由于长度原因,变成"/Eugene/Michae"和"lJackson",这两个字符串就产生了断句!
    我是希望能够把它处理成"/Eugene"和"/MichaelJackson"这样的两个!斜杠还是保留的便于识别不同的字段.
      

  5.   

    发现设置长度参数,无论如何也得不到楼主给的结果
    设置>21,运行结果
    Eugene/MichaelJackson
    /Eminem/Limpbizkit
    /Linkinpark-LPU/Five设置>20.运行结果
    Eugene
    /MichaelJackson
    /Eminem/Limpbizkit
    /Linkinpark-LPU/Five
      

  6.   

    谢谢他们是通过结贴并给他们加分来完成的,呵呵。
    BTW,不要给我分,我没有参与题目的讨论。