2012-12-03 51 views
0

我正在解析一个文件,有时我得到一个小行或大行。 如果行很小,是否可以追加带额外标记的incase?Java:将额外的标记动态添加到字符串

这是我的计划

private static String[] LISTOFFIELDS = null; 

String fields = "A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z"; 

String line = "OIUU||HHH|INBVC INB|PP|NN|OO|PPPPP||"; 

String[] totaltokens = line.split("\\|", LISTOFFIELDS.length); 






private static HashMap<String, Object> ParsedValues(String[] totaltokens) { 

     HashMap<String, Object> map = new HashMap<String, Object>(); 

     for (int i = 0; i < LISTOFFIELDS.length; i++) { 
      String fieldName = LISTOFFIELDS[i]; 
      map.put(fieldName, totaltokens[i]); 
     } 


    } 

正如你可以看到,如果该行是小我将得到

异常线程 “main” java.lang.ArrayIndexOutOfBoundsException:10

这里我可以避免ArrayIndexOutOfBoundsException如果我减少字符串字段字符串字段=“A | B | C | D | E | F | G | H |”;

是否有可能避免异常,而不对字符串字段做任何修改?

+2

使用StringBuilder的* *而不是*字符串*。 – adatapost

+0

为什么你的'LISTOFFIELDS'是'null'? –

回答

1

检查字符串的长度,然后再进行拆分并获取其子字符串。

0

只是减少你的循环迭代次数:

int size = Math.min(LISTOFFIELDS.length, totaltokens.length); 
for (int i = 0; i < size; i++) { 
    String fieldName = LISTOFFIELDS[i]; 
    map.put(fieldName, totaltokens[i]); 
} 
相关问题