但它刪除空格。我不想刪除空白區域!我該怎麼辦?我使用正則表達式刪除字符串中的重複單詞
原始文本
我贊贊贊這部電影,這是非常非常非常非常好好 好。
刪除重複
我利剋剋這部電影,這是索索goodgood。
這裏是我的代碼:
String result = s.replaceAll("(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+", "$1$1");
但它刪除空格。我不想刪除空白區域!我該怎麼辦?我使用正則表達式刪除字符串中的重複單詞
原始文本
我贊贊贊這部電影,這是非常非常非常非常好好 好。
刪除重複
我利剋剋這部電影,這是索索goodgood。
這裏是我的代碼:
String result = s.replaceAll("(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+", "$1$1");
/**
*
* @author Md. Amran Hossain
*/
public class DuplicateWordRemove {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String s = "like like like";
// TODO code application logic here
String result = s.replaceAll("(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+", "$1");
System.out.println(""+result);
}
}
像
更新回答
對不起,張貼第二個答案,但我只是想確定你得到通知這個答案的。
String h = s.replaceAll("(?i)\\b([a-z]+)\\b((?:\\s+\\1\\b)+)", "$2");
h = h.replaceAll("\\s+", " "));
這應該刪除最後一個重複的字:)
謝謝@Coffeehouse Coder: D – Shar
@Shar Anytime bro! –
由於達烏德·本·賈巴爾指出,在評論中,如果你想的話之間的空間,爲什麼不你在替換模式添加一個空格,如下所示:
String result = s.replaceAll("(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+", "$1 $1");
是啊!我明白了。謝謝@Nacimota:D – Shar
爲什麼要使用''$ 1 $ 1''作爲替換字符串而不是'「$ 1」'? –
@DawoodibnKareem因爲我想要的結果像Like Like -----> Like Like – Shar
像「like like」之間有一個空格嗎?像'「$ 1 $ 1」'也許? –