繁体   English   中英

使用模式拆分字符串时的结果为空

[英]Empty result when string splited using pattern

我有以下代码:

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

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

"", "+", "*", "/"

但是我想要一个结果:

“+”、“*”、“/”


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

您可以使用以下内容:

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

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

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

这打印:

[+, *, /]

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

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

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

operatorsLine的最终值将是[+,*,/]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM