Java:将字符串方程拆分为数字和运算符

问题描述:

我想将字符串方程拆分成两个数组:数字和运算符。Java:将字符串方程拆分为数字和运算符

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是数组数组中的一个元素,并保留我的运算符数组中的小数点。

+0

FWIW:'+ - /'在字符类并不意味着“+或 - 或/“表示任何字符_between_ +和/。在ASCII中是“+, - 。/”。 (这就是为什么它匹配“。”)如果你想在字符类中放置一个,就把它放在最后。 –

逗号仅显示您的元素分区。
[,表示第一个元素为空。

尝试在[^\d.]+
对于运营商而言,这些分裂原正则表达式

对于数字,各执[\d.]+

而且,我不知道Java的拆分可以删除空的元素,但你”如果可以,d想
做检查过程。


斯普利特的注意事项 -
[\d.]+是一个大体匹配的数字,即类。 'dd.dd'(叶运营商
[^\d.]+它匹配运营商(叶数

+0

哇,这个作品!你能向我解释这些意思是什么吗? – softboy

+0

@softboy - 好吧,试着添加一些注释.. – sln