【问题标题】:Java concatenate 4 strings then truncateJava连接4个字符串然后截断
【发布时间】:2016-02-18 16:18:11
【问题描述】:

处理 Java 问题

我有 4 个字符串: s1s2s3s4 我必须将它们连接在一起。如果随后生成的字符串长于 75 个字符,则我需要截断,但从 s1 开始并截断该字符串的最右边的字符,直到它与其他 3 个字符匹配到 75。如果我最终删除了所有字符在s1 中,然后继续进行s2 截断,再次从最右边的字符开始,直到s2+s3+s4 <=75 等等。

有什么简单的方法可以做到这一点吗?我一直在考虑 while() 循环,但是当我检查 s1+s2+s3+s4 然后一次截断一个字符串时,它变得非常复杂。

有人做过类似的事情并有好的解决方案吗?

【问题讨论】:

  • 为什么这个问题被否决了?为什么没有 cmet 反对?
  • 那么你是否在每个字符串 s1、s2 等中从右到左删除字母,直到字符串适合 75?

标签: java concatenation truncate


【解决方案1】:

你需要操作的不是字符串,而是它的长度。

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

【讨论】:

    【解决方案2】:

    将字符串的长度相加。 如果结果大于 75,则计算要截断的字符数。 截断第一个字符串,直到截断正确数量的字符,或者第一个字符串为空。 在后一种情况下,使用字符串 2 重复,依此类推。 之后连接生成的字符串。

    现在你只需要将散文翻译成 java 代码 :-)

    【讨论】:

    • 可能只是减去要截断的字符数的第一个字符串形式的长度;)
    • 是的,这就是我本来应该做的,但我不是来为他做他的 compsci 作业的。所以我只写散文。
    【解决方案3】:
    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 ..
        }
    }
    

    【讨论】:

    • 非常感谢。这正是我想要的。
    猜你喜欢
    • 2012-12-31
    • 1970-01-01
    • 2019-03-03
    • 2014-08-03
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    相关资源
    最近更新 更多