我想用'-'来分隔包含范围的字符串,
示例
String range = "1 - 10";
我正在做这样的事情:
String[] s = range.split("-");
因此s[0]
将具有起始值,而s[1]
将具有终止值。
但这不适用于负数。
示例
String range = "-1 - -10";
如何处理负范围?
答案 0 :(得分:8)
在这种情况下,我想使用Patterns而不是split,例如:
(-?\d+)\s*-\s*(-?\d+)
女巫的意思:
(-?\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();
}
输出
1 10
-1 -10
1 10
-10 5
如果您的数字也可以带有正+
号,则可以将正则表达式更改为
([+-]?\d+)\s*-\s*([+-]?\d+)
如果您的数字可以是小数,则可以使用此正则表达式:
([-+]?\d*\.?\d*)\s*-\s*([-+]?\d*\.?\d*)