Как заменить последнюю букву на другую букву в Java с помощью регулярного выражения

1

я видел, чтобы заменить "," на ".". используя ". $" | ", $", но эта логика не работает с алфавитами. мне нужно заменить последнюю букву слова на другую букву для всего слова в строке, содержащей EXAMPLE_TEST, используя java, это мой код

  Pattern replace = Pattern.compile("n$");//here got the real problem
  matcher2 = replace.matcher(EXAMPLE_TEST);
  EXAMPLE_TEST=matcher2.replaceAll("k");

Я также попробовал "//n $", "\n $" и т.д. Пожалуйста, помогите мне получить входной текст решения => njan ayman output text => njak aymak

  • 0
    в вашем входе нет буквы n в конце. Каков ваш вклад и ожидаемый результат?
  • 0
    Вы должны предоставить пример ввода / вывода и ожидаемого вывода. То, как вы это называете: «последняя буква слова в другой букве для всех слов в строке», звучит так, что вы хотите заменить любую букву пробелом: (\w)(?=\s)
Показать ещё 6 комментариев
Теги:
letter

4 ответа

2

Вместо конца строки $ anchor используйте границу слова \b

String s = "njan ayman";
s = s.replaceAll("n\\b", "k");
System.out.println(s); //=> "njak aymak"
  • 0
    спасибо это работает
2

Вы можете использовать lookahead и групповое соответствие:

   String EXAMPLE_TEST = "njan ayman";
    s = EXAMPLE_TEST.replaceAll("(n)(?=\\s|$)", "k");
    System.out.println("s = " + s); // prints: s = njak aymak

Объяснение:

(n) - the matched word character
(?=\\s|$) - which is followed by a space or at the end of the line (lookahead)

Вышесказанное является лишь примером! если вы хотите переключать каждую запятую с периодом, в котором средняя линия должна быть изменена на:

s = s.replaceAll("(,)(?=\\s|$)", "\\.");
  • 0
    @AvinashRaj это не имеет значения, n был только примером, ОП сказал, что он попытался переключить запятую с s = s.replaceAll("(,)(?=\\s|$)", "\\."); что означает, что он должен будет использовать: s = s.replaceAll("(,)(?=\\s|$)", "\\.");
  • 0
    Конечно, нет. Опять же, приведенный выше код является примером, OP должен будет переключить выражение в соответствующей группе с тем, что он хочет: это может быть (,) , (n) , (\\w) или что-то еще.
Показать ещё 4 комментария
0

Вот как бы я это настроил:

(?=.\b)\w

Который в Java должен быть экранирован следующим образом:

(?=.\\b)\\w

Это означает что-то вроде символа (\ w) после (? =) Любого символа (.) В конце слова (\ b) ".

String s = "njan ayman aowkdwo wdonwan. wadawd,.. wadwdawd;";
s = s.replaceAll("(?=.\\b)\\w", "");
System.out.println(s); //nja ayma aowkdw wdonwa. wadaw,.. wadwdaw;

Это удаляет последний символ всех слов, но оставляет следующие символы без буквенно-цифровых символов. Вы можете указать только определенные символы для удаления/замены, изменив . к чему-то другому.

Тем не менее, другие ответы совершенно хороши и могут достичь именно того, что вы ищете.

  • 0
    это тоже работает :-)
-2
if (word.endsWith("char oldletter")) {
    name = name.substring(0, name.length() - 1 "char newletter");
}
  • 0
    Будет ли это даже скомпилировать?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню