2013-09-27 74 views
0

後,如果標題不明確,這裏是例子刪除特殊字符和Word字符特殊字符後面的空格中的Java

我想刪除字符串中的所有特殊字符,特殊字符後一個單詞字符後跟由一個空白空間。

String = "Here is the world's first movie. #movie"; 

與上面的例子中,我需要一個像

"Here is the world first movie movie"; 

我試過很多的正則表達式實現這一目標的輸出,但我不能我嘗試以下

replaceAll("[^\\w]\\w{1}\\s", " "); 

,但它不是工作,你能告訴我正則表達式與解釋。

在此先感謝

編輯:的要求是我想刪除特殊字符像#movie,也希望與單個字符後面加一個空格像world's favorite刪除特殊字符的最終輸出應是world favorite

特別支持後的字符可能是's'。例如 world's, India's, john's

+0

假設#是你的特殊字符...後#movie是沒有空格。所以來源是錯誤的。你的輸出缺少'.'。請查閱。 –

+1

對我來說工作很好(替換''s'),你還記得把'replaceAll'的結果賦給什麼嗎? – MadProgrammer

+0

如果後面跟着沒有,一個或多個單詞字符,然後是空格,是否刪除了特殊字符,以便替換''s','.'而不是'#movie',因爲後面沒有空格?意思就像[this](http://regex101.com/r/mH7aY0)? – Jerry

回答

0

最後我做了許多試驗和錯誤,最終的正則表達式字符串工作爲[^a-zA-Z\\s]s?(\\s)?

str.replaceAll("[^a-zA-Z\\s]s?(\\s)?", "$1");

這裏的解釋是,

[^a-zA-Z\\s]s? =>找到所有的特殊字符,除了白色的空間,由一個或零s

(\\s)? =>隨後立即通過follwed一個或零空白。

這裏我分組爲(\\s) becoz我想用replaceAll()函數作爲第二個參數替換爲$1

答案是

String orig = "Here is the world's first movie. #movie";` 
System.out.println(orig..replaceAll("[^a-zA-Z\\s]s?(\\s)?", "$1")); 

最終的輸出是Here is the world first movie movie

0
String input = "Here is the world's first movie. #movie"; 
    String output = input.replaceAll("[[email protected]#$%^&*][a-z]+", ""); 
    System.out.println(output); 

正則表達式 - [!@#$%^ & *] [AZ] +

[[email protected]#$%^&*] - tests for special character for the first character 
    [a-z]+ - tests for word 
+1

雖然這確實照顧'#電影',它也應該照顧['。 '](不要忘記白色空間),但'#movie'後面沒有空格,所以要麼是源錯誤,要麼是錯誤 - 只是說;) – MadProgrammer

+0

@MadProgrammer我想要的是刪除所有特殊字符作爲'[!@#$%^ &*.,:;]',刪除特殊字符和下一個單詞或任何字符,直到像'world's most'最終輸出的空間應該是「世界最大」 – Mani

+0

@ankit它不工作 – Mani