2012-03-13 33 views
-2

我有這個字符串var1=val1&&var2=val2。使用java的正則表達式支持,我想分割像這樣的字符串{val1, val2}。即得到的陣列應該包含val1val2。換句話說,我想刪除以等號結尾的單詞和特殊字符& &,我想用正則表達式完成所有這些操作。有人可以幫我解決這個問題嗎?在java中使用正則表達式分割此字符串(var1 = val1 && var2 = val2)

+1

爲什麼你甚至需要正則表達式?如果你知道你的值不包含'&&',你可以簡單地將字符串替換爲','並加上和附加大括號。 – Viruzzo 2012-03-13 13:10:04

回答

1

他是要求正則表達式..所以這裏是你如何做到這一點:

提供的正則表達式是隻有當變量只有2個變量長( IE,要拆分的字符串遵循與您提供的完全相同的模式)。 對於正則表達式在Java中,您使用模式和匹配器類。

String[] vars = {"", ""}; 

String toCheck = "var1=val1&&var2=val2"; 

Pattern p = Pattern.compile(".*?=(.*?).*?=(.*$)"); 
Matcher m = p.matcher(toCheck); 

while(m.find()){ 
    vars[0] = m.group(1); 
    vars[1] = m.group(2); 
} 

我用一個非常有用的工具是這樣的:http://myregexp.com/signedJar.html

,如果你不完全瞭解正則表達式,它很難讓你的頭左右..但只是把你的時間和測試的東西出來與Java applet ^。它實時編譯你的正則表達式,是真正的信息=)

*注意:無論「var1」,「var2」,「val1」和「val2」是什麼,該正則表達式將匹配。 EG:它將匹配:用戶名= derpa & &密碼= HERPA

和輸出將使陣列如:{derpa,HERPA}

好運。我討厭正則表達式,現在我用他們所有的時間:d

[編輯]

多個變量,這是我會怎麼做:

 ArrayList<String> vars = new ArrayList<String>(); 

     String toCheck = "var1=val1&&var2=val2&&var3=val3&&var4=val4"; 

     Pattern p = Pattern.compile("(.*?)=(.*?)&&|(.*?)=(.*?)$"); 
     Matcher m = p.matcher(toCheck); 

     while(m.find()){ 
      String val = m.group(2); 
      if(val == null) 
       vars.add((m.group(4))); 
      else 
       vars.add(val); 
     } 

     for(int j = 0; j < vars.size(); j++){ 
      System.out.println(vars.get(j)); 
     } 

這是測試和工作。

+0

謝謝你的回答。可以說我有更多。例如,我有var1 = val1 && var2 = val2 && var3 = val3 && var4 = val4,每次都會改變。有人可以幫我解決我剛剛提到的問題。提前致謝。 – Dev 2012-03-13 16:12:45

+0

好吧,我終於找到了我正確的正則表達式xD: – Kaden 2012-03-14 04:34:05

+0

編輯第一個答案。 – Kaden 2012-03-14 04:44:55

3

你可以只使用split()

public static void main(String[] args) throws Exception { 
    String s = "var1=val1&&var2=val2"; 
    String[] exp = s.split("&&"); 
    String[] values = new String[] {exp[0].split("=")[1], exp[1].split("=")[1]}; 
    System.out.println(Arrays.deepToString(values)); //prints [val1, val2] 
} 
相關問題