如何解析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

回到顶部