首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同长度的分裂字符串

不同长度的分裂字符串
EN

Stack Overflow用户
提问于 2016-03-31 12:20:22
回答 3查看 143关注 0票数 1

我有一串2000长的。它有固定的格式。我需要用不同的长度来分割它。现在,我使用的是String.substring()方法。我要把它分70次。有什么更好的方法吗。

//代码

代码语言:javascript
复制
 String rawString = "01304456789AGASTECH.....";
 String fisrtStr = rawString.substring(0,2);
 String secondStr = rawString.substring(2,8);
 String otherStr = rawString.substring(8,10); and so on
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-31 12:25:53

您可以查看smooks框架,它可以从逗号分隔或固定长度字段"CSV“格式转换。

以下是用户指南中的相关部分。

模板代码数量不多,但是定义字段列表(每个字段都有一个字符长度)和它们映射到的pojo相对容易。

编辑:我在github上找到了一些小吻-例子

票数 2
EN

Stack Overflow用户

发布于 2016-03-31 12:26:17

您可以将拆分的索引保存在一个列表或数组中,并使用一个循环遍历它。

另一种选择是将唯一的拆分代码放入字符串中,以便在可能的情况下可以使用拆分(UniqueCode)方法。

票数 1
EN

Stack Overflow用户

发布于 2016-03-31 12:55:56

那么,您可以轻松地编写一个助手方法:

代码语言:javascript
复制
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;
}

然后,如果您有一些大小,打电话:

代码语言:javascript
复制
List<String> items = splitFixed("01ABC02", 2, 3, 2);   // returns [01, ABC, 02]

如果您有很长的大小列表,那么首先定义一个描述您的格式的静态最终数组:

代码语言:javascript
复制
final static int[] SIZES = { 2, 6, 2, ... };

//...

List<String> items = splitFixed(input, SIZES);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36333335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档