我试图让正则表达式匹配,然后用它获取值。例如,我想检查1234作为id,如果存在,则获取状态(在这种情况下为0)。基本上它的id:状态。这是我正在尝试的:
String topicStatus = "1234:0,567:1,89:2";
String someId = "1234";
String regex = "\\b"+someId+":[0-2]\\b";
if (topicStatus.matches(regex)) {
//How to get status?
}
我不仅不知道如何在没有拆分和循环的情况下获得状态,我也不知道为什么它与正则表达式不匹配。
任何帮助将不胜感激。感谢。
答案 0 :(得分:2)
使用Pattern
类
String topicStatus = "1234:0,567:1,89:2";
String someId = "1234";
String regex = "\\b"+someId+":[0-2]\\b";
Pattern MY_PATTERN = Pattern.compile(regex);
Matcher m = MY_PATTERN.matcher(topicStatus);
while (m.find()) {
String s = m.group(1);
System.out.println(s);
}
这里的关键是在括号中包围你想要的位置[0-2]
,这意味着它将被保存为第一组。然后,您可以通过group(1)
答案 1 :(得分:0)
我做了一些假设,你的对子我们总是用逗号分隔,然后用冒号分隔。使用它我刚刚使用split
。
String[] idsToCheck = topicStatus.split(",");
for(String idPair : idsToCheck)
{
String[] idPairArray = idPair.split(":");
if(idPairArray[0].equals(someId))
{
System.out.println("id : " + idPairArray[0]);
System.out.println("status: " + idPairArray[1]);
}
}