如何使用基本分隔符(如“+”,“ - ”,“*”和“/”)拆分字符串,而不使用句点作为分隔符?

时间:2012-03-16 00:43:54

标签: java regex split delimiter

我需要拆分一个将作为计算器输入的字符串。我想使用java中的split函数将其拆分为两个数组。第一个数组应该只有字符串的数字(这包括带小数位的数字)。第二个应该只包括像“+ - * /”这样的数学运算符。目前这是我的代码:

String[] numbers = s.split("[[+-/*]&&[^.]]");
String[] operators = s.split("[^*/+-]");

我似乎能够将字符串拆分成单独的数字数组(即使是小数点),但是如果在任何地方都有小数点,我似乎无法将字符串拆分为单独的运算符数字(尽管如此)。

Ex:我希望“9.0 / 3 + 2.3”成为{/,+}。

我应该如何更改我的正则表达式(第二行代码)以获得所需的输出?我尝试过的所有东西都没用。

1 个答案:

答案 0 :(得分:3)

试试这个:

String[] numbers = s.split("[[+-/*]&&[^.]]");

ArrayList<String> ops = new ArrayList<String>();
for (String op : s.split("[^*/+-]"))
    if (!op.isEmpty())
        ops.add(op);
String[] operators = ops.toArray(new String[0]);