я видел, чтобы заменить "," на ".". используя ". $" | ", $", но эта логика не работает с алфавитами. мне нужно заменить последнюю букву слова на другую букву для всего слова в строке, содержащей 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
Вместо конца строки $
anchor используйте границу слова \b
String s = "njan ayman";
s = s.replaceAll("n\\b", "k");
System.out.println(s); //=> "njak aymak"
Вы можете использовать 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|$)", "\\.");
n
был только примером, ОП сказал, что он попытался переключить запятую с s = s.replaceAll("(,)(?=\\s|$)", "\\.");
что означает, что он должен будет использовать: s = s.replaceAll("(,)(?=\\s|$)", "\\.");
(,)
, (n)
, (\\w)
или что-то еще.
Вот как бы я это настроил:
(?=.\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;
Это удаляет последний символ всех слов, но оставляет следующие символы без буквенно-цифровых символов. Вы можете указать только определенные символы для удаления/замены, изменив .
к чему-то другому.
Тем не менее, другие ответы совершенно хороши и могут достичь именно того, что вы ищете.
if (word.endsWith("char oldletter")) {
name = name.substring(0, name.length() - 1 "char newletter");
}
n
в конце. Каков ваш вклад и ожидаемый результат?(\w)(?=\s)