Java 使用模式拆分字符串时结果为空
我有以下代码:Java 使用模式拆分字符串时结果为空,java,regex,java-8,functional-programming,java-stream,Java,Regex,Java 8,Functional Programming,Java Stream,我有以下代码: String generalRequest = "4+6*12/3"; String[] operatorsLine = generalRequest.split("[0-9]+"); 结果,我在运算符行中有多余的空值: “”、“+”、“*”、“/” 我希望有一个结果: “+”、“*”、“/” 如何使用String.split()方法跳过向数组中添加”值?您可以使用以下方法: String[] operatorsLine = Arrays.stream(generalRequ
String generalRequest = "4+6*12/3";
String[] operatorsLine = generalRequest.split("[0-9]+");
结果,我在运算符行
中有多余的空值:
“”、“+”、“*”、“/”
我希望有一个结果:
“+”、“*”、“/”
如何使用
String.split()
方法跳过向数组中添加”
值?您可以使用以下方法:
String[] operatorsLine = Arrays.stream(generalRequest.split("[0-9]+"))
.filter(s -> !s.isEmpty())
.toArray(String[]::new);
在本例中,您只需要使用单字符运算符,
从字符串中删除所有数字,并使用空字符串作为delimeter进行拆分将起作用:
String generalRequest = "4+6*12/3";
String[] operatorsLine = generalRequest.replaceAll("\\d", "").split("");
System.out.println(Arrays.toString(operatorsLine));
这张照片是:
[+, *, /]
将第二个参数提供给该方法,并将其限制为2个输出字段,然后再次拆分它,怎么样
String generalRequest = "4+6*12/3";
String[] operatorsLine = (generalRequest.split("\\d+", 2)[1]).split("\\d+");
第一次拆分将输出一个数组:[“”,“+6*12/3”]
,然后获取第一个索引并使用相同的正则表达式再次拆分它
运算符行
的最终值将是[+,*,/]
您想要的结果是什么?@Ghanima“+”,“*”,“/”谢谢,但我得到了下一个编译错误:错误:(51102)java:methodtoarray接口java.util.stream.stream无法应用于给定类型;必需:找到java.util.function.IntFunction:java.lang.String[]原因:无法在新字符串[0]
中推断类型变量A(参数不匹配;java.lang.String[]无法转换为java.util.function.IntFunction)!谢谢你,朋友)。我也总是遇到麻烦(函数生成器)没问题,我很乐意帮助:)