Java连接4个字符串然后截断

时间:2016-02-18 16:18:11

标签: java concatenation truncate

处理Java问题

我有4个字符串: s1s2s3s4,我必须连接成一个。如果后续生成的字符串长度超过75个字符,那么我需要截断,但是从s1开始并截断该字符串的最右边的字符,直到它与另一个字符串匹配为75.如果我最终删除所有字符串s1中的字符,然后从最右边的字符开始s2截断,直到s2+s3+s4 <=75,依此类推。

任何简单的方法来实现这一目标?我一直在考虑while()循环,但是当我检查s1+s2+s3+s4然后一次截断一个字符串时,它变得相当复杂。

任何人做过类似的事情并且有一个很好的解决方案吗?

3 个答案:

答案 0 :(得分:0)

您需要不使用字符串,而是使用其长度。

  1. 获取所有字符串长度的总和
  2. 检查哪个字符串需要截断
  3. 从截断的字符串开始获取总和。

答案 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 ..
    }
}