2016-02-03 178 views
2

我正在使用下面的程序來分割我的字符串。按字符數字分割字符串

public static void main(String[] args) { 
    String test = "A1=CA2=BOA2=RA4=O"; 
    String data[] = test.split("[A-a]\\d{1,100}="); 

    for (String str : data) { 
     System.out.println("Split data:"+str); 
    }  
} 

//Output 
    Split data: 
    Split data:C 
    Split data:BO 
    Split data:R 
    Split data:O 

//But I want output something like below : 
    Split data:A1=C 
    Split data:A2=BO 
    Split data:A2=R 
    Split data:A4=O 

我如何拆分我的字符串以上述方式

+0

也許這可以工作:http://stackoverflow.com/questions/12001953/javascript-and-regex-split-string-and-keep-the-separator – pdem

+0

爲什麼你不試試這樣嗎? A1 = C,A2 = BO,A3 = R,A4 = O由(',') –

+0

分割你會不會總是2個字符? – thedarkpassenger

回答

6

使用正先行斷言((?=)),以獲得輸出:

test.split("(?=[A-Z]\\d{1,100}=)"); 

此正則表達式將匹配任何零長度後跟(大寫字母)的字符串,後跟一個由[1-100]個數字組成的數字,然後是=符號。

輸出:

Split data:A1=C 
Split data:A2=BO 
Split data:A2=R 
Split data:A4=O 
+1

請你解釋這個答案 –

+0

'= [A-Z]'不是必需的。對?所有的事情只需要添加'?='它會做什麼?何時添加或何時不添加? – iMBMT

+1

@bmt你是對的。 '= [A-Z]'不是必需的。 –