如何解析java中的范围输入
我想解析Java中的一系列数据(例如100-2000)。这段代码是否正确:如何解析java中的范围输入
String patternStr = "^(\\\\d+)-(\\\\d+)$"; Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
if(matcher.find()){
// Doing some parser
}
回答:
不,你是双倍(好,四倍) - 转义数字。
它应该是:"^(\\d+)-(\\d+)$"
。
含义:
- 开始输入的:
^
- 组1:1+位(S):
(\\d+)
- 连字符字面:
-
- 组2:1+位(S) :
(\\d+)
- 输入结束:
$
备注
这些组适用于反向引用。这里你没有使用,所以你可以围绕\\d+
表达式放弃括号。
在此示例中,您正在解析范围的表示。
如果你想要一个实际的范围类,你可以使用[min-max]
成语,其中“min”和“max”是数字,例如[0-9]
。
正如由Andreas提到的,你可以使用String.matches
没有Pattern
- Matcher
成语和^
和$
,如果你想整个输入相匹配。
回答:
反斜杠太多,并且可以使用matches()
而不使用锚点(^ $)。
String inputStr = "100-2000"; String patternStr = "(\\d+)-(\\d+)";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
System.out.println(matcher.group(1) + " - " + matcher.group(2));
}
至于你的问题“这是正确的代码”,所有你需要做的就是用main
方法包装代码的类和运行它,你会得到答案:没有。
以上是 如何解析java中的范围输入 的全部内容, 来源链接: utcz.com/qa/261950.html