我有一个长度为2000的字符串。它有一个固定的格式。我需要用不同的长度分割它。现在我正在使用String.substring()方法。我需要拆分70次。有没有更好的方法来做到这一点。
//代码
String rawString = "01304456789AGASTECH.....";
String fisrtStr = rawString.substring(0,2);
String secondStr = rawString.substring(2,8);
String otherStr = rawString.substring(8,10); and so on
答案 0 :(得分:2)
您可以查看smooks
框架,该框架可以转换为逗号分隔或固定长度字段“CSV”格式。
以下是User Guide中的相关部分。
少量样板代码,但定义字段列表(每个字段都有一个字符长度)和它们映射到的pojo相对容易。
编辑:我在github上找到了一些smooks-examples。
答案 1 :(得分:1)
您可以将拆分索引保存在列表或数组中,并使用循环迭代它。
另一个选项是您将唯一的拆分ode放入字符串中,因此如果可能,您可以使用split(uniqueCode)方法。
答案 2 :(得分:0)
好吧,你可以轻松编写辅助方法:
static List<String> splitFixed(String s, int... sizes) {
List<String> res = new ArrayList<>(sizes.length);
int pos = 0;
for (int size : sizes) {
res.add(s.substring(pos, pos + size));
pos += size;
}
return res;
}
然后,如果你有几个尺码,请致电:
List<String> items = splitFixed("01ABC02", 2, 3, 2); // returns [01, ABC, 02]
如果你有很长的大小列表,首先要定义一个描述你的格式的静态最终数组:
final static int[] SIZES = { 2, 6, 2, ... };
//...
List<String> items = splitFixed(input, SIZES);