在Java中将字符串拆分为n长度的块

时间:2010-11-04 14:21:49

标签: java string split

  

可能重复:
  Split string to equal length substrings in Java

鉴于我有以下实用方法:

/**
 * Splits string <tt>s</tt> into chunks of size <tt>chunkSize</tt>
 *
 * @param s the string to split; must not be null
 * @param chunkSize number of chars in each chuck; must be greater than 0
 * @return The original string in chunks
 */
public static List<String> splitInChunks(String s, int chunkSize) {
    Preconditions.checkArgument(chunkSize > 0);
    List<String> result = Lists.newArrayList();
    int length = s.length();
    for (int i = 0; i < length; i += chunkSize) {
        result.add(s.substring(i, Math.min(length, i + chunkSize)));
    }
    return result;
}

1)在任何常见的Java库中是否存在等效的方法(例如Apache Commons,Google Guava),所以我可以将它从我的代码库中删除?找不到快速查看。它是返回一个数组还是一个字符串列表并不重要。

(显然我不会为此添加依赖于某个庞大的框架,但随意提及任何常见的lib;也许我已经使用它了。)

2)如果没有,是否有一些更简单,更清晰的方法在Java中执行此操作?或者是一种效率更高的方式? (如果您建议使用基于正则表达式的解决方案,请考虑非正则表达专家的可读性清晰度......: - )

修改:由于 Split string to equal length substrings in Java 完全回答了我的问题,因此符合“this Guava solution”问题的重复条件。

2 个答案:

答案 0 :(得分:14)

您可以使用Guava的Splitter

执行此操作
 Splitter.fixedLength(chunkSize).split(s)

...返回Iterable<String>

this answer中的更多示例。

答案 1 :(得分:1)

大多数是Split Java String in chunks of 1024 bytes的副本,其中将其转换为流并一次读取N个字节的想法似乎符合您的需求?

Here is a way of doing it with regex(对于这个特殊的坚果来说,这似乎是一个大锤)