拆分数学方程式字符串

时间:2011-06-07 18:34:26

标签: java regex

    Pattern pattern = Pattern.compile("([^\\d.]|[\\d.]++)");
    String[] equation =  pattern.split("5+3--323");
    System.out.println(equation.length);

我试图拆分数字(可能是组)和非数字,在这个例子中我希望有一个6号数组: 5,+,3, - , - ,323

我该怎么做?

3 个答案:

答案 0 :(得分:7)

尝试使用匹配器,如下例所示。它会准确地返回您所追求的内容。

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MathSplitTest
{
    public static void main(String[] args)
    {
        Pattern pattern = Pattern.compile("[0-9]+|[-+]");
        String string = "5+3--323";                 
        Matcher matcher = pattern.matcher(string);
        while(matcher.find())
            System.out.println("g0="+matcher.group(0));
    }
}

答案 1 :(得分:2)

使用

怎么样?
new java.util.Scanner(new java.io.StringReader("5+3--323"));

代替?

http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html

答案 2 :(得分:2)

如果您的数字以逗号分隔,则首先将字符串标记化;

tok = new StringTokenizer(string, ",");

然后尝试从每个令牌创建一个数字。如果它不是数字,那么它就是一个符号:

while (tok.hasMoreTokens()){
    String tok = tok.nextTok();
    try {
          new Integer(tok);
    }catch (NumberFormatException e){

    }
}

如果tok不是数字,则抛出NumberFormatException。