2011-05-30 89 views
1

我想在Java/Android中創建一個正則表達式,該正則表達式在第三個逗號之後或實際上在第三個逗號處截斷了一個字符串。這可能嗎?任何建議讓我開始這個?Java/Android的正則表達式問題

+2

有什麼建議可以幫助您入門? [學習正則表達式](http://www.regular-expressions.info/)。 – 2011-05-30 18:36:08

+0

@Martihno - 我知道......我知道。我只是不經常地做他們,我總是從頭開始。在SO上發佈一個問題讓我有一點動機去實現它。 – 2011-05-30 19:05:42

回答

3

請看Pattern class。

替代品:String#split您的字符串或使用StringTokenizer

+0

使用split或StringTokenizer會強制他連接結果。不是很優雅的imo。 – aioobe 2011-05-30 18:51:11

+0

當然,但我不知道他究竟想要達到什麼效果或做什麼(因此只有'替代品')。只是想給出一些建議,如他的答案中所述;) – timbooo 2011-05-30 18:53:31

+0

啊,好點。 – aioobe 2011-05-30 18:54:36

4

不確定正則表達式是我的第一個方法。無論如何,下面是我的選擇。

  • 使用正則表達式ideone.com demo

    Matcher m = Pattern.compile("(.*?,.*?,.*?),").matcher(str); 
    if (m.find()) 
        str = m.group(1); 
    


  • 使用indexOf/substringideone.com demo

    str = str.substring(0, str.indexOf(',', 
             str.indexOf(',', 
             str.indexOf(',') + 1) + 1)); 
    


1

翻譯s/([^,]*,){3}.+/\1/到Java正則表達式-ESE第三個逗號後截斷,s/([^,]*,[^,]*,[^,]*),.+/\1/有截斷部分包括thir d逗號。

1
int comma = -1; 
int n = 0; 
do { 
    comma = str.indexOf(',', comma + 1); 
} while (comma >= 0 && ++n < 3); 
if (comma > 0) { 
    str = str.substring(0, comma); 
} else { 
    // third comma not found 
}