我的代码解析XML文件以查找ID。但我只需要存储以_
或某个数字开头的那些。
Node legacyNode = (Node) xPath2.evaluate(elem, XPathConstants.NODE);
Element legacyElem = (Element) legacyNode;
if (legacyElem != null) {
String legacyId = legacyNode.getFirstChild().getNodeValue();
if (legacyId.matches("_(.*)")) {
entry.setLegacyID(legacyId);
}
}
if (legacyId.matches("_(.*)"))
检查以_
开头的ID。我不知道应该改变它,所以它也会检查数字。
答案 0 :(得分:3)
尝试使用正则表达式[_0-9](.*)
而不是_(.*)
。
答案 1 :(得分:3)
这应该有效:
legacyId.matches("^[_0-9].*$")
答案 2 :(得分:2)
为什么不只是子串并比较?:
String sample = /*whatever*/;
String check = sample.substring(0, 1);
if (check.matches("[0-9_]")) {
// starts with number or _
}
根据以下评论建议进行编辑:
String sample = /*whatever*/;
String check = sample.substring(0, 1);
if ("_1234567890".indexOf(check) != -1) {
// starts with number or _
}
请注意,您应检查字符串是否为空/无法启动
答案 3 :(得分:0)
如何将逻辑放入XPath表达式?这可能不会更快,但在某些情况下它可能会更优雅。