Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:将字符串方程拆分为数字和运算符_Java_Arrays_Regex_String_Split - Fatal编程技术网

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中,这是集“+,-。/”(这就是它与“.”匹配的原因)如果你想在一个字符类中加一个-,把它放在末尾。