[英]Arraylist Sublist IndexOutOfBounds Exception
根据我编写的条件,使用以下代码修改HL7消息并添加一些十六进制字符。
从文本框中复制字符串,然后将其转换为Arraylist,以便我可以遍历它以查找HL7段的名称。 为此,我要从Arraylist中获取一个子列表。 但是当使用下面的代码时,我得到了IndexOutOf Bounds异常。 我知道搜索子列表时,我的搜索超出了Arraylist的大小。 只需要一个提示来检查子列表的值是否不超过数组列表大小。
下面是相同的代码:
public String validateMsg(String msg) {
msg = msg.replaceAll("[^a-zA-Z0-9] && ^[|&^~#.$]", null);
msg = msg.replaceAll("\\s", "");
msg = msg.replaceAll("\u000b", "");
String strArray[] = msg.split("");
ArrayList<String> msgArray = new ArrayList<String>(
Arrays.asList(strArray));
msgArray.add(0, "\u000b");
for (int i = 0; i + 3 < msgArray.size(); i++) {
String tmpSeg = "";
StringBuilder sb = new StringBuilder();
for (String tmpSeg1 : msgArray.subList(i, i + 3)) {
sb.append(tmpSeg1).append("");
}
tmpSeg = sb.toString();
if (tmpSeg.equals("EVN") && !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("MRG")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PID")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PD1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PV2")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("OBR")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ORC")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("OBX")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("SPM")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZFM")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("GT1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZEP")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZVT")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("AL1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("FT1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("IN1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("IN2")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("IN3")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("NK1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ACC")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PR1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("UB1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("UB2")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PD1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("RXO")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("RXE")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("RXR")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("RXC")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("RXO")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ROL")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("DB1")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("DRG")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PDA")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("NTE")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ODS")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ODT")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("SCH")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZDS")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZIN")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZAL")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("NPU")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZAB")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZAU")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZEP")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZEV")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZRC")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZAT")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("ZIV")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("TXA")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("MFI")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("MFE")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("STF")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PRA")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PID")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("AIS")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("AIG")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("AIL")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("AIP")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("RRA")
&& !msgArray.get(i - 1).contains("\r")
|| tmpSeg.equals("PV1")
&& !msgArray.get(i - 1).contains("\r")) {
msgArray.add(i, "\r");
// break;
}
}
msgArray.add(msgArray.size(), "\r");
msgArray.add(msgArray.size(), "\u001C\r");
StringBuilder strBuilder = new StringBuilder();
for (String str : msgArray) {
strBuilder.append(str).append("");
}
return strBuilder.toString();
}
请帮我一些技巧,以便我的病情检查我是否未超过ArrayList Size。
提前致谢。
尝试以下代码,
if((i+3)<= msgArray.size()){
for(String tmpSeg1:msgArray.subList(i, i+3))
{
sb.append(tmpSeg1).append("");
}
}else{
System.out.println("Exceeds size");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.