我有一个已知长度的输入字符串。我必须将此输入字符串拆分为30个不同长度的子字符串。 例如: -
Input string: "abcdefghijklmnopqrstuvwxyz"
Output string: "a","bcd","efgij","kl","mnopqrstu","v","wx","yz"
我想知道是否存在某种API或方式,我可以提供长度,根据我想要分割字符串,并一次性获取输出而不是多步。
任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
开箱即用的一种方法是使用RegEx
。这是一个将它分成4,3,5,2和字符串其余部分的例子(mathed组的第一个值是整个字符串,这就是我从1开始的原因):
String input = "abcdefghijklmnopqrstuvwxyz";
Matcher m = Pattern.compile("^(.{4})(.{3})(.{5})(.{2})(.*)").matcher(input);
if (m.matches()) {
for (int i = 1; i <= m.groupCount(); i++) {
System.out.println(m.group(i));
}
}
然而,这比使用给定的尺寸使用简单的for分割字符串慢得多。您需要考虑速度和质量而不是易用性。
有关正则表达式的更多信息:https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
答案 1 :(得分:1)
无需API。编写一个方法只用了1分钟就完成了:
public static List<String> splitString(String inputString, int... lengths) {
List<String> substrings = new ArrayList<String>();
int start = 0;
int end = 0;
for(int length : lengths) {
start = end;
end = start + length;
String substring = inputString.substring(start, end);
substrings.add(substring);
}
return substrings;
}
调用splitString(&#34; abcdefghi&#34;,3,4,2)将产生:[abc,defg,hi]