处理Java问题
我有 4 个字符串: s1
、s2
、s3
、s4
我必须连接成一个。 如果后续生成的字符串长度超过 75 个字符,则需要截断,但从 s1
开始并截断该字符串的最右侧字符,直到它与其他 3 个字符一起适合 75。 如果我最终删除了 s1
中的所有字符,然后继续截断s2
,再次从最右边的字符开始,直到s2+s3+s4 <=75
等等。
有什么简单的方法可以做到这一点吗? 我一直在考虑一段时间()循环,但是当我检查s1+s2+s3+s4
然后一次截断一个字符串时,它会变得非常复杂。
有人做过类似的事情并有一个好的解决方案吗?
您需要操作的不是字符串,而是其长度。
- 获取所有字符串的长度总和
- 检查哪个字符串需要截断
- 获取从截断字符串开始的总和。
将字符串的长度相加。如果结果大于 75,则计算要截断的字符数。截断第一个字符串,直到截断了正确的字符数,或者第一个字符串为空。在后一种情况下,重复字符串 2,依此类推。之后连接生成的字符串。
现在你只需要将散文翻译成java代码:-)
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 ..
}
}