繁体   English   中英

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

[英]Attempting to pass the nth specified element after splitting a String array

下午好,编码员。

对于以下内容,我有相同的XML代码段

<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

在第二次使用此代码时,我需要访问第三个元素,即。 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>

一审。

您正在使用i作为QUALF和KTEXT的索引。 这意味着如果QUALF [i] == 002是第5个元素,那么我将是4,并且您在KTEXT中超出范围。

如果我理解的正确,您想创建第二个索引(j),其起始为1,并且每次进入IF时都将j递增1。

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]来标识数组中的第二个元素。

干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM