处理Java问题
我有4个字符串:
s1
,s2
,s3
,s4
,我必须连接成一个。如果后续生成的字符串长度超过75个字符,那么我需要截断,但是从s1
开始并截断该字符串的最右边的字符,直到它与另一个字符串匹配为75.如果我最终删除所有字符串s1
中的字符,然后从最右边的字符开始s2
截断,直到s2+s3+s4 <=75
,依此类推。
任何简单的方法来实现这一目标?我一直在考虑while()循环,但是当我检查s1+s2+s3+s4
然后一次截断一个字符串时,它变得相当复杂。
任何人做过类似的事情并且有一个很好的解决方案吗?
答案 0 :(得分:0)
您需要不使用字符串,而是使用其长度。
答案 1 :(得分:0)
添加字符串的长度。 如果结果大于75,则计算要截断的字符数。 截断第一个字符串,直到您截断正确的字符数,或者第一个字符串为空。 在后一种情况下,重复使用字符串2,依此类推。 之后连接结果字符串。
现在你只需要将散文翻译成java代码: - )
答案 2 :(得分:0)
String s1, s2, s3, s4;
ArrayList<String> list = new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
int len = 0;
for(String s : list)
len += s.length();
if(len > 75)
{
int diff = len - 75;
for(int i = 0; i < list.size() && diff > 0; i++) {
String s = list.get(i);
int len = s.length();
if(len < diff)
list.set(i, null);
else {
s = s.subString(0, s.length() - diff);
list.set(i, s);
}
diff -= len;
}
}
String result = "";
for(String s : list) {
if(s != null) {
// concat ..
}
}