我有一个非常简单的问题是我有一个字符串0-1000
说str = "0-1000"
我使用str.split("-")
现在,我被分配检查号码,因为我注意到这两个数字可能是负数。
如果我继续str.split("-")
,那么我也会跳过负号。
有人可以为我建议方法吗?
答案 0 :(得分:4)
您可以像这样使用正则表达式:适用于所有情况
public static void main(String[] args) {
String s = "-500--578";
String[] arr = s.split("(?<=\\d)-"); // split on "-" only if it is preceeded by a digit
for (String str : arr)
System.out.println(str);
}
O / P:
-500
-578
答案 1 :(得分:4)
由于String.split()
使用正则表达式进行拆分,您可以执行以下操作:
String[] nos = "-1000--1".split("(?<=\\d)-";
这意味着您在数字后面的减号字符处拆分,即必须是运算符。
请注意,需要使用正面后瞻(?<=\d)
,因为您只想匹配减号。 String.split()
删除所有匹配的分隔符,因此\d-
之类的内容也会删除数字。
要解析数字,然后迭代数组元素并调用Integer.valueOf(element)
或Integer.parseInt(element)
。
请注意,这假定输入字符串有效。根据您想要实现的目标,您可能首先必须检查匹配的输入,例如使用-?\d--?\d
检查字符串格式为x-y
,其中x
和y
可以是正整数还是负整数。