Подтвердить что ты не робот

Правильное регулярное выражение для замены em-dash базовым "-" в java

Мой вопрос касается метода replaceAll класса String.

Моя цель - заменить все em-тире в тексте базовым "-". Я знаю, что символ unicode em-dash - это \u2014.

Я попробовал это следующим образом:

String s = "asd – asd";
s = s.replaceAll("\u2014", "-");

Тем не менее, em-тире не заменяется. Что я делаю неправильно?

4b9b3361

Ответ 1

Незначительное редактирование после редактирования вопроса:

Возможно, вы не используете em-dash. Если вы не знаете, что у вас есть, хорошим решением является просто найти и заменить все тире... em или иначе. Посмотрите этот ответ, вы можете попробовать использовать Свойство пунктуации префикса Unicode для всех тире == > \\p{Pd}

String s = "asd – asd";
s = s.replaceAll("\\p{Pd}", "-");

Рабочий пример, заменяющий тире em и регулярную тире с указанным выше кодом.

Литература:
public String replaceAll(String regex, String replacement)
Регулярные выражения Unicode

Ответ 2

String.replaceAll принимает в качестве первого параметра регулярное выражение. Если вы просто хотите заменить все вхождения одного char другим char, рассмотрите возможность использования String.replace(char, char):

String s = "asd – asd";
s = s.replace('\u2014', '-');

Ответ 4

Вы путаете параметры.
Попробуйте это
String s = "asd – asd"; s = s.replaceAll("-", "\u2014");