拆分各种长度的字符串

时间:2016-03-31 12:20:22

标签: java string

我有一个长度为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

3 个答案:

答案 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);