日期:2014-05-20  浏览次数:20781 次

请求一个拼接分割后字符串算法的思路!!
我在完成一个动态构造字符串的功能时,思路好混乱啊!具体的功能需求是这样的:
从外界传进一个以 '/ '分割的字符串,我需要将其转换成指定长度的字符串数组。如果当前字符串长度越界则将其放入下一个字符串中。
举例如下:
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 ";
希望哪位高人能够指点迷津,给一点思路!谢谢!
我现在的问题就是集中在如何判断长度和拼接。有点混乱!

------解决方案--------------------
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));