我需要做的是:
我尝试过在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个字符更短,因此将字符串分解为数组中的两行。我已经在代码中删除了这个,试图首先解决数组中的其他问题。
答案 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);
}
它有效,但这种方式要求输入字符串包含空格。 所以随时改进它......