Java:将字符串方程拆分为数字和运算符
我试图将一个字符串方程拆分为两个数组:数字和运算符Java:将字符串方程拆分为数字和运算符,java,arrays,regex,string,split,Java,Arrays,Regex,String,Split,我试图将一个字符串方程拆分为两个数组:数字和运算符 String expr = "3/20.0"; String[] numbers = expr.split("[+-/\\*]"); String[] operators = expr.split("[^+-/\\*]+"); System.out.println(Arrays.toString(numbers)); System.out.println(Arrays.toString(operators)); 但是我的代码打印出来:[3
String expr = "3/20.0";
String[] numbers = expr.split("[+-/\\*]");
String[] operators = expr.split("[^+-/\\*]+");
System.out.println(Arrays.toString(numbers));
System.out.println(Arrays.toString(operators));
但是我的代码打印出来:[3,20,0][,/,.]
但我正在尝试获取[3,20.0][,/]
我不知道为什么逗号在运算符数组前面,但我主要希望20.0成为数字数组中的一个元素,并在运算符数组中保留小数点。逗号只是显示元素分区。
此
[,
表示第一个元素为空
试试这些原始正则表达式
对于数字,在[^\d.]+
对于操作员,在
[\d.]+
而且,我不知道Java split是否可以删除空元素,但您希望如果可以,请执行检查后处理
拆分票据-
[\d.]+
是一个通常与数字匹配的类,即“dd.dd”(离开运算符)[^\d.]+
是与运算符(留下数字)匹配的反比。哇,这很管用!你能给我解释一下它们各自的意思吗?fwiw:+-/
在字符类中并不表示“+或-或/”它表示+和/”之间的任何字符。在ASCII中,这是集“+,-。/”(这就是它与“.”匹配的原因)如果你想在一个字符类中加一个-,把它放在末尾。