我已经看到将“,”替换为“。”通过使用“。$”|“,$”,但这个逻辑不适用于字母表。 我需要使用java将包含EXAMPLE_TEST的字符串中的所有单词替换为单词的最后一个字母 这是我的代码
Pattern replace = Pattern.compile("n$");//here got the real problem
matcher2 = replace.matcher(EXAMPLE_TEST);
EXAMPLE_TEST=matcher2.replaceAll("k");
我也试过“// n $”,“\ n $”等 请帮我解决问题 输入文字=&n; njan ayman 输出文字=> njak aymak
答案 0 :(得分:2)
您可以使用前瞻和组匹配:
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|$)", "\\.");
答案 1 :(得分:2)
$
锚的结尾
String s = "njan ayman";
s = s.replaceAll("n\\b", "k");
System.out.println(s); //=> "njak aymak"
答案 2 :(得分:0)
以下是我的设置方法:
(?=.\b)\w
在Java中需要转义如下:
(?=.\\b)\\w
它转换为&#34;字符(\ w)之后(?=)单词(\ b)&#34;后面的任何单个字符(。)。
String s = "njan ayman aowkdwo wdonwan. wadawd,.. wadwdawd;";
s = s.replaceAll("(?=.\\b)\\w", "");
System.out.println(s); //nja ayma aowkdw wdonwa. wadaw,.. wadwdaw;
这将删除所有单词的最后一个字符,但会留下非字母数字字符。您可以通过将.
更改为其他内容来指定要删除/替换的特定字符。
然而,其他答案非常好,可能完全符合您的要求。
答案 3 :(得分:-1)
if (word.endsWith("char oldletter")) {
name = name.substring(0, name.length() - 1 "char newletter");
}