在拆分String数组后尝试传递第n个指定元素

时间:2014-12-30 13:28:44

标签: java xml

下午好的编码员。

对于下面的内容,我有相同的XML Snippet

<E1EDP19 SEGMENT="1">
    <QUALF>001</QUALF> 
    <IDTNR>101-CB-PI</IDTNR> 
</E1EDP19>
<E1EDP19 SEGMENT="1">
    <QUALF>002</QUALF> 
    <IDTNR>101-CB-PI</IDTNR> 
    <KTEXT>OXY MED 0,47KG PI/J44.9/0201/97062</KTEXT> 
</E1EDP19>
<E1EDP19 SEGMENT="1">
    <QUALF>003</QUALF> 
    <IDTNR>6005919004334</IDTNR> 
</E1EDP19>
<E1EDP19 SEGMENT="1">
    <QUALF>006</QUALF> 
    <IDTNR>MEDLRG</IDTNR> 
</E1EDP19>

对于QUALF的每个实例都是002我需要使用KTEXT并将其拆分为/

我做到了。

for (int i = 0; i < QUALF.length; ++i){ 
        if (QUALF[i].equals("002")){
            text = KTEXT[i];
         String segments[] = text.split("/");
         finalResult = segments[1];
         result.addValue(finalResult);
        }
}

但是我想在第一次使用这段代码时访问第二个元素(segments [1]),即。 J44.9

在第二次使用此代码时,我需要访问第3个元素,即。 0201

我目前得到一个arrayoutofbounds [1]异常。除非我通过制作

来改变样本
<E1EDP19 SEGMENT="1">
    <QUALF>002</QUALF> 
    <IDTNR>101-CB-PI</IDTNR> 
    <KTEXT>OXY MED 0,47KG PI/J44.9/0201/97062</KTEXT> 
</E1EDP19>

第1实例。

2 个答案:

答案 0 :(得分:0)

您正在使用i作为QUALF和KTEXT的索引。这意味着如果QUALF [i] == 002是第5个元素,我将是4并且您在KTEXT中不受限制。

如果我理解你的话,你想要制作一个第二个索引(j),该索引(j)以1开始,并且每当你进入IF时,将j加1。

答案 1 :(得分:0)

for (int i = 0; i < QUALF.length; i++){ 
            if (QUALF[i].equals("002")){
                text = KTEXT[i];
                String[] parts = text.split("/");
                for (int j = 0; j < parts.length; j++){ 
                    if (j == 1){
                        String nthWord = parts[j];
                        result.addValue(nthWord);
                    }
                }
            }
}

谢谢大家。正如第二个字段参数中所指出的那样,在初始中指出了第二个循环。

然后用于通过[j]来识别数组中的第二个元素。

干杯。