【发布时间】:2020-06-16 02:26:44
【问题描述】:
我正在尝试排除可能为负数的字符串整数。 我试过这个:
String numbersExcluded=input.replaceAll("[^-?0-9]+"," ");
String[] stringOfNumbers=numbersExcluded.trim().split(" ");
for (String each:stringOfNumbers)
System.out.println(each);
但是当我输入像“aaa-4aaa5aaa?”这样的输入时,就会出现这种情况。打印循环,打印
-4
5
?
为什么包含??我该如何解决这个问题?
【问题讨论】:
-
你在否定字符类中有
?,所以它显然会跳过?。 -
您的字符串显示“用空格替换不是减号、问号或数字的内容”。问号在您的排除列表中。
-
@RealSkeptic 我的意思是“一次或从不”发生?标志 。那么有什么替代方案呢?
-
在字符类中,
?没有这个含义。我认为更清晰的选择是不使用拆分,而是使用Matcher和find的循环。 -
@chuck2002 它还允许像
---这样的字符串。我认为 OP 只想保留以可选减号开头的字符串,后跟数字。