Sak*_*ura 1 java regex string split
我想拆分一个由' - '组成的字符串,
例
String range = "1 - 10";
Run Code Online (Sandbox Code Playgroud)
我正在做这样的事情:
String[] s = range.split("-");
Run Code Online (Sandbox Code Playgroud)
因此s[0]将具有起始价值并s[1]具有最终价值.
但这不适用于负数.
例
String range = "-1 - -10";
Run Code Online (Sandbox Code Playgroud)
我该如何处理负范围?
我希望在这种情况下使用模式而不是拆分这样的正则表达式:
(-?\d+)\s*-\s*(-?\d+)
Run Code Online (Sandbox Code Playgroud)
巫婆的意思是:
(-?\d+) 匹配第一个负数或正数\s*-\s*然后是零个或多个空格,然后是一个连字符-(我注意到它需要制作一个范围)然后是零个或多个空格(-?\d+) 匹配第二个负数或正数代码可以是:
String[] ranges = {"1 - 10", "-1 - -10", "1-10", "-10-5"};
String regex = "(-?\\d+)\\s*-\\s*(-?\\d+)";
Pattern pattern = Pattern.compile(regex);
for (String range : ranges) {
Matcher matcher = pattern.matcher(range);
while (matcher.find()) {
String number1 = matcher.group(1);
String number2 = matcher.group(2);
System.out.print(number1 + " " + number2);
}
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
输出
1 10
-1 -10
1 10
-10 5
Run Code Online (Sandbox Code Playgroud)
如果您的号码也可以有正+号,您可以更改您的正则表达式
([+-]?\d+)\s*-\s*([+-]?\d+)
Run Code Online (Sandbox Code Playgroud)
如果您的数字可以是小数,则可以使用此正则表达式:
([-+]?\d*\.?\d*)\s*-\s*([-+]?\d*\.?\d*)
Run Code Online (Sandbox Code Playgroud)