有固定长度的字符串,每条记录必须吐出15个字符。结果应该放在List
中,但似乎整个字符串总是放在List中的0位置。
Arrays.asList(a1.substring(1,324).split("[a-zA-Z]{20}"))
为什么?
更新:
List<String> l = Arrays.asList("1111111111 1119999999 ".split("[0-9]{15}"));
答案 0 :(得分:3)
拆分正则表达式应该是:
String[] arr = str.split("(?<=\\G.{20})");
以上每20个字符分割str
例如,下面的代码为每15个字符拆分str:
String str ="hkdhadhkshdkhskhdkashdkasgi2oyeihsadkahdkashdlkhas";
List<String> list = Arrays.asList(str.split("(?<=\\G.{15})"));
System.out.println(list);
打印:
[hkdhadhkshdkhsk, hdkashdkasgi2oy, eihsadkahdkashd, lkhas]
答案 1 :(得分:0)
从你的问题:
有固定长度的字符串,每条记录必须吐出15个字符。结果应放在
中List
。
String.split()
并不适合这样的事情。它被设计成在分隔符上分割,每15个字符&#34;不是。
您正在寻找String.substring()
中的功能,该功能会返回String
,即[beginIndex, endIndex)
之间的序列。
使用这种方法:
public static List<String> splitByIndex(String toSplit, int index) {
List<String> result = new ArrayList<String>();
for (int i = 0; i < toSplit.length(); i += index) {
if (i + index < toSplit.length()) {
result.add(toSplit.substring(i, i + index));
} else {
result.add(toSplit.substring(i, toSplit.length() - 1));
}
}
return result;
}
您可以将String
拆分为List<String>
一定数量的字符。这个示例代码:
String a1 = "I'm the fixed length string that needs to be split by 15 characters.";
List<String> list = splitByIndex(a1, 15);
System.out.println(list);
将输出:
[I'm the fixed l, ength string th, at needs to be , split by 15 cha, racters]