2017-03-21 29 views
0

我是Java新手,没有为我的场景找到任何确切的解决方案。我有一个长度为1500的大字符串。Java - 大字符串需要以不同的字段长度分割

例如: 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个字符串变量的更好的办法建议,并将其存储在那里或它们加载到一个字符串数组?我打算在获取它们之后,用所有这些字段构建一个xml。

我感谢你的帮助!

+1

使用'array'长度200 –

+1

的你可以在字符串分割成一个数组或列表 –

+1

什么固定的格式?它是否存储在代码中的任何位置? –

回答

1

好吧,如果这两个以下,那么这会工作:

  1. 有对字段长度的模式:像(0,2),(3,10),(11,13) (14,21)...
  2. 你有场列表长度

在这两种情况下,它是很简单的解决你想要什么:

第一种情况:模式为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; 
    } 
} 

第二种情况:你有一堆不同领域的lenghts

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]); 
} 
+0

如果这种模式比较复杂,我会以不同的方式实现它,具体取决于它的复杂程度和原因。 – holandaGo