Java - 大字符串需要使用不同的字段长度进行拆分

时间:2017-03-21 20:23:10

标签: java

我是Java的新手,并没有为我的方案找到任何确切的解决方案。我有一个1500长的大字符串。

例如: String inData = "THISKALJSKAJFDSKJDKSJ KSJDLKJSFKD LSKJDFKSJ, ASA:..";

我有这1500个长度的固定格式。我必须根据每个字段固定长度将字符串拆分为200多个字段。我找到了类似下面的内容。

String firstFld = inData.substring(0, 2);

String secondFld = inData.substring(3, 10);

String thirdFld = inData.substring(11, 13);

任何人都可以建议用更好的方式进行拆分而不是声明200个字符串变量并将它们存储在那里或将它们加载到String Array中吗?我计划在获取它们之后用所有这些字段构建一个xml。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

好吧,如果它是以下两个,那么这将起作用:

  1. 有一个字段长度的模式:像(0,2),(3,10),(11,13),(14,21)...
  2. 您有一个字段长度列表
  3. 在这两种情况下,解决你想要的东西都非常简单:

    第一种情况:模式是2个字符 - > 7个字符以2开头

    String[] fields = new String[getNumberOfFields(1500)];
    int curr = 0;
    for(int i = 0 ; i < fields.length; i++) {
        if(i % 2 == 0) {
            fields[i] = inData.substring(curr, curr+7);
            curr+=8;
        } else {
            fields[i] = inData.substring(curr, curr+2);
            curr+=3;
        }
    }
    

    第二种情况:你有一堆不同的字段长度

    int curr = 0;
    String[] fields = new String[fieldLengths.length];
    for(int i = 0; i < fieldLengths.length; i++) {
         fields[i] = inData.substring(curr, curr+fieldLengths[i]);
    }