将字符串拆分为相等的块

时间:2017-08-14 04:40:46

标签: java

我正在努力解决这个问题。我需要将一个字符串分成相等的长度,并为其提供一个索引。在过去的两天里,我一直在研究和尝试这个话题,但一无所获。我不想浪费我或你的时间,所以我会告诉你我想要的。这是我正在尝试做的一个例子。

杰克说:“你好,我是一个很好的人,他爬上了岩石。”,那个句子长达47个字符,所以我想我需要把它除以我希望拆分的索引。那么就说我将它除以3,即16为四舍五入。所以它会显示如下:“你好,我是”,“一个好人”,“爬上岩石。”但在其他情况下,它并不总是均匀的。为了尝试更进一步帮助你,我在网上找到了一些C#代码,我把它的大部分转换为Java但是底部部分,因为那里的所有混乱的lambdas都在底部附近。这是:

private List<String> split(String str, int chunks) {
    List<String> l = new ArrayList<>();
    if (str == null || str.isEmpty())
        return l;
    if (str.length() < chunks) {
        l.add(str);
        return l;
    }
    int chunkSize = str.length() / chunks;

    int stringLength = str.length();
    for (int i = 0; i < stringLength; i += chunkSize) {
        if (i + chunkSize > stringLength) {
            chunkSize = stringLength - i;
            l.add(str.substring(i, chunkSize));
        }
    }
    final String[] residual = {""};


    l.set((f, i) -> (i > chunks - 1).ToList().ForEach(f -> residual[0] += f));
    l.set(chunks - 1, l.get(chunks - 1) + residual[0]);
    return Arrays.asList(l.get(chunks));
}

0 个答案:

没有答案