我有类似的东西:
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);
}
通过将索引存储在变量中,可以避免搜索两次。