拆分字符串返回空值

时间:2019-03-10 18:26:43

标签: java arrays string

我有以下代码:

String generalRequest = "4+6*12/3";
String[] operatorsLine = generalRequest.split("[0-9]+");

结果,我在operatorsLine中有多余的空值:

  

“”,“ +”,“ *”,“ /”

但是我希望有结果:

  

“ +”,“ *”,“ /”


如何使用""方法跳过将String.split()值添加到数组中?

3 个答案:

答案 0 :(得分:4)

您可以使用类似的内容:

String[] operatorsLine = Arrays.stream(generalRequest.split("[0-9]+"))
                               .filter(s -> !s.isEmpty())
                               .toArray(String[]::new);

答案 1 :(得分:3)

在这种情况下,您只需要单字符运算符,
从字符串中删除所有数字并以空字符串作为分隔符进行分割将起作用:

String generalRequest = "4+6*12/3";
String[] operatorsLine = generalRequest.replaceAll("\\d", "").split("");
System.out.println(Arrays.toString(operatorsLine));

此打印:

[+, *, /]

答案 2 :(得分:3)

如何向split(String regex, int limit)方法提供第二个参数并将其限制为2个输出字段并再次拆分:

String generalRequest = "4+6*12/3";
String[] operatorsLine = (generalRequest.split("\\d+", 2)[1]).split("\\d+");

第一次拆分将输出一个数组:["", "+6*12/3"],然后获取第一个索引并使用相同的Regex再次拆分。

operatorsLine的最终值为[+,*,/]