replaceAll, как поменять буквы

Что мне нужно вместо «», чтобы заменить все буквы алфавита на *?

public static void main(String[] args) {
    String s = "Tere, TULNUKAS, 1234!";
    String t = asenda(s); // "****, ********, 12345!" <---- example 
}

public static String asenda(String s) {
    return s.replaceAll("", "*");
}    

Спасибо!


person user3086917    schedule 14.01.2014    source источник
comment
Остерегайтесь любых неанглийских символов с этим регулярным выражением... гораздо лучшая идея - категория букв Unicode: \\p{L}.   -  person Marko Topolnik    schedule 14.01.2014


Ответы (3)


Вы должны использовать регулярное выражение:

return s.replaceAll("[a-zA-z]", "*")
person Jakub Kubrynski    schedule 14.01.2014

Для каждой буквы вы можете использовать регулярное выражение [a-zA-Z]

Например:

public static String asenda(String s) {
    return s.replaceAll("[a-zA-Z]", "*");
} 
person Konstantin Yovkov    schedule 14.01.2014
comment
@RohitJain Но это тоже не простая строка. Есть на что обратить внимание :) - person Marko Topolnik; 14.01.2014
comment
@MarkoTopolnik Не понял вашего комментария. :( - person Rohit Jain; 14.01.2014
comment
@RohitJain $ и \ - это специальные символы. Попробуйте создать регулярное выражение для замены каждого \ на \\ :) - person Marko Topolnik; 14.01.2014
comment
@MarkoTopolnik Действительно. $ используется для ссылки на группы захвата. :) - person Rohit Jain; 14.01.2014

Правильное решение с поддержкой символов Юникода:

public static String asenda(String s) {
    return s.replaceAll("\\p{L}", "*");
}

Вы можете сопоставить один символ, принадлежащий к категории «буква», с помощью \p{L}.

Источник: Регулярные выражения Unicode/Категории Unicode

Больше информации:

person MariuszS    schedule 14.01.2014