用最后一个空格拆分一个长字符串,但不再是子字符串,然后是132个字符

时间:2013-10-18 12:10:11

标签: java string substring split

我需要做的是:

  • 我有一个字符串,可以从0个字符到输入中的300个字符。
  • 我需要将字符串拆分为每行最多132个字符的数组。
  • 我需要将最后一个空格上的字符串从132开始向后计数。
  • 下一行不应以空格开头。
  • 如果字符串不超过132个字符,则应发送字符串的全部/剩余字符。

我尝试过在Google上找到的不同的Java代码,并且我已经修改过以满足我的需求。得到了不同的结果,但它们似乎总是在我进一步向下延伸时偏移。

public void SplitString(String[] input, ResultList result, Container container) throws     StreamTransformationException{

int i = 0;
int start = 0;
int end = 0;

//loop through entire values in input array
for (int j=0; j<input.length; j++) { 
  if (input[j].length() == 0) {

       result.addValue("");

  }
else {
            //repeat for the length of each value
      for (i=0;i<input[j].length(); i=i+(input[j].lastIndexOf(" ",132))) {
           start =i;
           end =i+input[j].lastIndexOf(" ",132);

               if (input[j].length()> end) {
                   result.addValue(input[j].substring(start,end));
           }

           if (!(input[j].length()==0)){
                if (end >= input[j].length()) { 
                     end = end -input[j].lastIndexOf(" ",132);
                     result.addValue( input[j].substring(end,input[j].length()));
                }

           }      
         }
  }     
}

来回浏览我的代码,但这是“最后一版”。我知道这段代码不会考虑字符串是否比132个字符更短,因此将字符串分解为数组中的两行。我已经在代码中删除了这个,试图首先解决数组中的其他问题。

1 个答案:

答案 0 :(得分:0)

我有类似的问题,并尝试过这样:

public void splitString(String input, List result) {

String[] words = input.split(" "); System.out.println(words.length); String currentLine = ""; for (int i = 0; i < words.length; i++) { String word = words[i]; if ((currentLine.length() + word.length()) < 132) { currentLine += " " + word; } else { result.add(currentLine); currentLine = word; } } result.add(currentLine);

}

它有效,但这种方式要求输入字符串包含空格。 所以随时改进它......