2014-01-05 151 views
3

所以我在玩弄字符串操作。我完成了用連字符替換空格字符。現在我想結合替換空白字符並從字符串中刪除撇號。我怎樣才能做到這一點?從字符串中刪除撇號和空格

這是我到目前爲止已經試過:

String str = "Please Don't Ask Me"; 
    String newStr = str.replaceAll("\\s+","-"); 

    System.out.println("New string is " + newStr); 

輸出是:

Please-Don't-Ask-Me 

但我想輸出是:

Please-Dont-Ask-Me 

但是我無法去除撇號。有任何想法嗎?非常感謝幫助。謝謝。

回答

7

試試這個:

String newStr = str.replaceAll("\\s+","-").replaceAll("'", ""); 

第一replaceAll回報與-替換所有空格的字符串,然後我們進行此項另一個replaceAll更換所有'什麼也沒有(意思是,我們要刪除它們)。

+0

這是可行的,除非你正在處理真正的大串......在這如果需要顯式的'matcher.find() - matcher.appendReplacement()'循環。 –

+0

@MarkoTopolnik [確實](http://stackoverflow.com/questions/7658568/most-efficient-way-to-use-replace-multiple-words-in-a-string)。 – Maroun

+0

@MarkoTopolnik你可以給我一些matcher.find()的實現嗎?我發現教程對初學者來說非常混亂 – Dunkey

1

這很容易,再次使用replaceAll的結果字符串:

String newStr = str.replaceAll("\\s+","-").replaceAll("'",""); 
+0

這與我的回答有何不同? – Maroun

+1

當我打字的時候冷靜的人沒有答案。你輸入的速度比我快一點...... – Shashank

+0

它有時發生在我覺得冒險足以從手機回答... –

1

試試這個..

String s = "This is a string that contain's a few incorrect apostrophe's. don't fail me now.'O stranger o'f t'h'e f'u't'u'r'e!"; 
     System.out.println(s); 

     s = s.replace("\'", ""); 

     System.out.println("\n"+s);