2017-03-06 75 views
-1
String s = " x + y "; 
String[] sArr = s.split("\\s*-|+|*|/\\s*"); 

我有一個字符串,如:" x + y "我想要得到與元素的數組:x, +, y(無空格),而不是+,如果我用-,/,*他們也應該工作。我在嘗試類似上面的代碼,但由於+和/或*,這給出錯誤。它將它們作爲正則表達式的一部分。如何解析x + y,以便在Java中獲得x,+,y(一個數組)?

我該如何做這項工作?請幫忙。

+1

你試過白色空間只有分裂? 's.split( 「\\ S *」)'。分裂的論點告訴你什麼應該來自你想要保留的元素。既然你想保留'+',它不應該是'split'正則表達式的一部分,除非你正在做一些非常棘手的事情。 – ajb

+0

's.replaceAll(「\\ s」,「」)。split(「」)' –

回答

1
String s = " x + y "; 
String[] sArr = s.trim().split("\\s+"); 
System.out.println(sArr[0]+":"+sArr[1]+":"+sArr[2]); 

輸出:x:+:y

+0

如果輸入字符串之間不包含空格,則代碼將不起作用。 –

+0

應該有一些分隔符將一個詞與另一個詞分開。在這個問題中,OP顯然要求按空間分開。否則,如果您不知道分隔符是什麼,那麼如何將字符串分隔爲「x + 25 + 50」? –

+0

是的,OP可能想要使用運算符號分隔字符串。 –

2
String s = " x + y - z/x * y "; 
s = s.replaceAll("\\s+", ""); 

第一替代:

String[] sArr = s.split("((?<=[\\+\\-\\*/])|(?=[\\+\\-\\*/]))"); 
System.out.println(Arrays.toString(sArr)); 

參考:https://stackoverflow.com/a/2206432/5352399

第二替代:

String[] sArr = s.split("\\s*"); 
System.out.println(Arrays.toString(sArr)); 

在這兩種情況下,輸出:

[x, +, y, -, z, /, x, *, y] 

如果你不想在輸出的經營者,你可以做這樣的事情。

String[] sArr = s.split("\\s*[-,+,*,/]\\s*"); 
System.out.println(Arrays.toString(sArr)); 

輸出:

[x, y, z, x, y] 
相關問題