如何替换字符串的第二个单词中的字符?

时间:2017-12-15 07:14:54

标签: java regex

我有一个如下所示的字符串

String inp = "Monday 02nd January 2017";

我想从第二个单词替换最后两个字符。我的输出应该如下所示。

Monday 02 January 2017

我创建了一个正则表达式,它给出了字符串中第二个单词的最后两个字符,但我不确定如何用任何内容替换它们。

这是我的正则表达式和替换函数

regex = "^(?:\\S+\\s){1}\\S+(\\w{2})\\b.*";
String op = inp.replaceAll(inp.replaceAll(regex, "$1"), "");

因为有时会发生这种情况,我的输入字符串就像August 01st January 2017,当我更换" st"它取代了所有" st"在一个字符串中。我不想那样发生。它应该替换第二个单词中的最后两个字符。

请问我怎样才能在java中实现这个目标?

1 个答案:

答案 0 :(得分:1)

试试这个:

DealTask.joins(:attachments)
        .select("deal_tasks.id, deal_tasks.name, count(attachements.id) as attachments")
        .group("deal_tasks.id")
        .collect(&:attributes)
#This will gve you something like

[
{"id"=>34332630, "name"=>"some name", "attachments"=>1}, 
{"id"=>71649461, "name"=>"some name", "attachments"=>1}
]

将此项与(?<=\w )(\w+)\w{2} 一起使用,并将替换为replaceFirst

说明:

lookbehind找到第二个单词的开头,因为你正在使用$1,它会找到第一个匹配(第二个单词)并停止,而不是继续找到第三个和第四个单词。 / p>

然后我们捕获一堆单词字符,然后是两个没有捕获的单词字符。