1

我已经看到将“,”替换为“。” 通过使用 ".$"|",$",但此逻辑不适用于字母。我需要使用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$" 等 请帮我获得解决方案 input text=>njan ayman output text=> njak aymak

4

4 回答 4

3

您可以使用前瞻和组匹配:

   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|$)", "\\.");
于 2014-09-24T06:08:01.033 回答
3

而不是字符串$锚的结尾,使用单词边界\b

String s = "njan ayman";
s = s.replaceAll("n\\b", "k");
System.out.println(s); //=> "njak aymak"
于 2014-09-24T06:09:55.813 回答
0

这是我将如何设置它:

(?=.\b)\w

在Java中需要如下转义:

(?=.\\b)\\w

它转换为类似“在 (?=) 单词末尾 (\b) 的任何单个字符 (.) 之后的字符 (\w)”。

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

这会删除所有单词的最后一个字符,但会留下非字母数字字符。您可以通过将 更改为其他内容来仅指定要删除/替换的特定字符.

但是,其他答案非常好,可能完全符合您的要求。

于 2014-09-24T06:35:28.383 回答
-1
if (word.endsWith("char oldletter")) {
    name = name.substring(0, name.length() - 1 "char newletter");
}
于 2015-11-12T05:49:54.667 回答