我有类似的东西:

String idCodice = cessionarioCommittente.substring(
    cessionarioCommittente.indexOf("<IdCodice>") + 10,
    cessionarioCommittente.indexOf("</IdCodice>"));


用于提取由cessionarioCommittente String变量的内容表示的XML文档的标签内的值。

问题是<IdCodice>标记可能不存在于cessionarioCommittente字符串中。

所以在这种情况下,我得到了这个异常:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -10
    at java.lang.String.substring(String.java:1937)
    at it.sistinf.ediwea.fepa.LoadFatturePa.run(LoadFatturePa.java:103)
    at it.sistinf.ediwea.fepa.TestLoadFatturePa.main(TestLoadFatturePa.java:18)


如何解决此问题?例如,检查字符串中是否存在该值?

最佳答案

您可以进行初步检查,以确保要查找的标签出现在String中:

String idCodice = null;
int startTag = cessionarioCommittente.indexOf("<IdCodice>");
int endTag = cessionarioCommittente.indexOf("</IdCodice>");
if (startTag >= 0 && endTag > startTag) {
    idCodice = cessionarioCommittente.substring(startTag + 10, endTag);
}


通过将索引存储在变量中,可以避免搜索两次。

09-25 18:42