如何使用正则表达式将java中的最后一个字母替换为另一个字母
我已经看到用“$”、$”替换“,”到“.”,但此逻辑无法使用字母表。 我需要将一个单词的最后一个字母替换为另一个字母,用于包含使用java的示例测试的字符串中的所有单词 这是我的密码如何使用正则表达式将java中的最后一个字母替换为另一个字母,java,regex,letter,Java,Regex,Letter,我已经看到用“$”、$”替换“,”到“.”,但此逻辑无法使用字母表。 我需要将一个单词的最后一个字母替换为另一个字母,用于包含使用java的示例测试的字符串中的所有单词 这是我的密码 Pattern replace = Pattern.compile("n$");//here got the real problem matcher2 = replace.matcher(EXAMPLE_TEST); EXAMPLE_TEST=matcher2.replaceAll("k"); 我还
Pattern replace = Pattern.compile("n$");//here got the real problem
matcher2 = replace.matcher(EXAMPLE_TEST);
EXAMPLE_TEST=matcher2.replaceAll("k");
我还尝试了“//n$”、“\n$”等
请帮我找到解决办法
输入文本=>njan ayman
输出文本=>njak aymak您可以使用前瞻和组匹配:
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|$)", "\\.");
您可以使用前瞻和组匹配:
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|$)", "\\.");
使用
使用
下面是我将如何设置它:
(?=。\b)\w
在Java中,需要如下转义:
(?=。\\b)\\w
它被翻译成类似“单词(\b)末尾任何单个字符(.)之后的字符(\w)”
这将删除所有单词的最后一个字符,但留下以下非字母数字字符。通过将
更改为其他内容,只能指定要删除/替换的特定字符
但是,其他答案都非常好,可能会完全满足您的要求。以下是我的设置方法:
if (word.endsWith("char oldletter")) {
name = name.substring(0, name.length() - 1 "char newletter");
}
(?=。\b)\w
在Java中,需要如下转义:
(?=。\\b)\\w
它被翻译成类似“单词(\b)末尾任何单个字符(.)之后的字符(\w)”
这将删除所有单词的最后一个字符,但留下以下非字母数字字符。通过将
更改为其他内容,只能指定要删除/替换的特定字符
但是,其他答案都非常好,可能会完全达到您想要的结果。您的输入中最后没有字母
n
。您的输入和预期输出是什么?您应该提供一个示例输入/输出和预期输出。您的表达方式:“字符串中所有单词的最后一个字母对应另一个字母”听起来您希望用空格替换任何字母:(\w)(?=\s)
字符串示例\u TEST=“njan ayman”;它包含我希望打印输出“njak aymak”@Ayman,而不是将预期输出放在注释中,而是放在实际问题中。输入的最后没有字母n
。您的输入和预期输出是什么?您应该提供一个示例输入/输出和预期输出。您的表达方式:“字符串中所有单词的最后一个字母对应另一个字母”听起来您希望用空格替换任何字母:(\w)(?=\s)
字符串示例\u TEST=“njan ayman”;它包含我希望打印输出的“njak aymak”@Ayman,而不是将预期的输出放在评论中,而是放在你的实际问题中。@AvinashRaj没关系,n
只是一个例子,OP说他尝试用句点切换逗号,这意味着他必须使用:s=s.replaceAll((,)(?=\\s|$),“\”代码>当然不是。同样,上面的代码是一个示例,OP必须根据自己的需要切换匹配组中的表达式:可以是(,)
,(n)
,(\\w)
,或者其他任何形式。假设我如何在空格之前找到n,事实上,我正在努力使英语成为马来语transilitration@Ayman我不明白你的问题:这个答案正好说明了这一点:如何识别空白前的n
。@AvinashRaj没关系,n
只是一个例子,OP说他尝试用句点来切换逗号,这意味着他必须使用:s=s.replaceAll((,)(?=\\s |$),“\\”代码>当然不是。同样,上面的代码是一个示例,OP必须根据自己的需要切换匹配组中的表达式:可以是(,)
,(n)
,(\\w)
,或者其他任何形式。假设我如何在空格之前找到n,事实上,我正在努力使英语成为马来语transilitration@Ayman我不明白你的问题:这个答案正好说明了它:如何识别出现在空白之前的n
。这个甚至可以编译吗?这个甚至可以编译吗?
if (word.endsWith("char oldletter")) {
name = name.substring(0, name.length() - 1 "char newletter");
}