2016-10-16 124 views
1

我有一個字符串說,「1.0 + 20 * 30.2-4.0/10.1」,我想在這樣一種方式,我將有一個字符串數組分裂說沒有得到預期的輸出

strArr = {"1.0", "20", "30.2", "4.0",10.1} 

我寫下面的代碼此

public class StringSplitDemo { 
public static void main(String[] args) { 
    String str = "1.0+20*30.2-4.0/10.1"; 
    String[] strArr = (str.split("[\\+-/\\*]")); 
    for(int i=0;i<strArr.length;i++) 
     System.out.print(strArr[i]+" "); 
    } 
} 

而不是打印期望的輸出(由我),即1.0 20 30.2 4.0 10.1其打印

output: 1 0 20 30 2 4 0 10 1 

似乎也將字符串拆分爲「。」。即使我沒有將它包含在正則表達式中。

我在這裏錯過了什麼? 什麼是正確的方法來做到這一點?

+1

'str.split(「[ - +/*]」)' –

回答

1

使用

String str = "1.0+20*30.2-4.0/10.1"; 
String[] strArr = str.split("[-+/*]"); 
System.out.print(Arrays.toString(strArr)); 

online Java demo

[\\+-/\\*]字符類匹配的不僅僅是你所定義的4個字符以上,爲-創建+/之間的範圍。

enter image description here

您可以通過逃避連字符修復正則表達式,但圖案看起來清爽多了,當你把-在角色職業,在這裏你不必逃避它的開始(結束)在那裏,連字符被視爲文字-

+0

你說得對。沒有使用任何逃生標誌,它會更乾淨。 – Naruto

+1

感謝@Wiktor的幫助; – andy1729

0

的問題是在正則表達式

所以,你需要逃避+否則就會把它當作一次ATLEAST

String[] strArr = (str.split("[\\-/\\*\\+]")); 

通過這裏不需要無路可逃符號。它可以簡寫爲

String[] strArr = (str.split("[-/*+]")); 
+0

在一個角色類中,只有這四個符號中的'-'才需要被轉義,並且只有當它們不在最後的位置。 –

相關問題