2014-01-05 5 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); 
Смежные вопросы