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

我試圖掰開號碼(可能是基團)和nonnumbers,在這個例子中我希望的是大小爲6數組: 5,+,3, - , - ,323分裂開數學方程式串

我該怎麼做?

+2

你不想*解析*數學*表達式*? – Rekin 2011-06-07 18:44:45

回答

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)); 
    } 
} 
+0

不僅僅是 - 和+,但它很容易添加其他人,這給了我我正在尋找的東西。謝謝 – smerny 2011-06-07 20:32:52

+0

@smerny很高興聽到這個問題。是的,我知道,例如。至少還有兩個操作/ * – Boro 2011-06-07 21:38:48

2

如果您的號碼用逗號分隔然後第一記號化的字符串;

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

然後嘗試從每個令牌創建一個數字。如果它不是一個數字那麼它是一個符號:

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

    } 
} 

如果托克不是數字則拋出NumberFormatException。