2014-05-24 53 views
0

我試圖創建一個程序,將給定的字符串拆分爲多個部分,然後將所有轉換爲小寫,如果它有兩個或多個連續的大寫字母。分割字符串後,它會去除任何非字母字符,將其全部轉換爲小寫字母,然後將非字母字符放回。我有邏輯將其全部轉換爲小寫,但不會分割字符串相當我想要的。目前,我試圖讓這個吧:如何拆分Java中的特定字符串

  • 拆分那裏有兩個或多個連續大寫字母串,然後讓這一切小寫(THIS_IS_A_TEST)
  • 拆分字符串那裏是一個「!「, 「?「, 要麼 」。」 (!?THIS.IS測試)
  • 拆分那裏是空白的字符串(這是一個測試)

我目前在這裏的一切,我需要做的這個東西:http://pastebin.com/ppBykvY4

凡「 [AZ] {2}「是連續兩個首都,但我不知道如何包含其餘的。 {Punc}只有在我可以排除除「!」,「?」,「。」之外的所有內容時纔有效。

另外,我正在使用BukkitAPI。

例: 如果用戶輸入的所有上述例子(在子彈),他們應該是:

  • this_is_a_test
  • this.is .A測試
  • 這是!?測試
+1

其他任何討論之前,你確定'分裂(「[AZ] {2}」)'是否符合您的期望?它所做的就是用任何兩組大寫字母作爲分隔符。例如。爲以下字符串:'我喜歡在洛杉磯吃披薩。並且在底特律喝下酒,分裂將是:'我','可以在'和'中吃披薩'。在底特律喝酒。 –

+0

要更清楚地編輯您的帖子,以添加示例字符串的預期結果。 –

+0

對不起,我忘了提及那部分。上述代碼行的目的是簡單地檢查是否滿足這些條件。然後它會把它全部轉換成一個小寫的字符串,所以你的例子就是「我喜歡在la吃披薩。然後在底特律喝酒。 –

回答

2

如果您想要多個分隔符,請使用|

String[] message = chat.split("regex|regex|regex"); 

所以我認爲它最終會是這樣的:

String[] message = chat.split("[A-Z]{2}|[.!?]|[\s]"); 

enter image description here

使用測試:http://www.regexplanet.com/advanced/java/index.html

+0

實際上逃避了點。這是正則表達式中的一個特殊字符。 –