如何使用正则表达式将最后一个字母替换为java中的另一个字母

时间:2014-09-24 05:59:43

标签: java regex letter

我已经看到将“,”替换为“。”通过使用“。$”|“,$”,但这个逻辑不适用于字母表。 我需要使用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

4 个答案:

答案 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)

使用word boundary \b

代替字符串$锚的结尾
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");
}