鉴于我有以下实用方法:
/**
* 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”问题的重复条件。
答案 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(对于这个特殊的坚果来说,这似乎是一个大锤)