2

嗨,我有这样的字符串

My home is a nice home in Paris but i will go to the home of some one else.

我想用正则表达式的字符 Z 替换从字符串的索引 5 开始到索引 25 的字符 i 。

所以结果应该是

"My home Zs a nZce home Zn Paris but i will go to the home of some one else."

你能帮我吗?

我将在 java 应用程序中使用它我必须创建一个接收正则表达式、字符串、开始索引、结束索引的 web 服务,并且它必须返回修改后的字符串。

非常感谢你。

4

4 回答 4

1

你可以使用这个正则表达式

(?<=^.{5,25})i

如果从行首开始之前至少有 5 个且最多 25 个字符,这将匹配“i”。

(?<=^.{5,25})是一个lookbehind assertion,用于检查这种情况。

^是匹配字符串开头的锚点

String s = "My home is a nice home in Paris but i will go to the home of some one else.";
String res = s.replaceAll("(?<=^.{5,25})i", "Z");

输出:

我的家 Zs 一个 nZce 家 Zn 巴黎,但我会去别人的家。

于 2013-06-20T13:14:53.097 回答
1

使用字符串缓冲区

StringBuffer sb=new StringBuffer(input);
int index=-1;
while((index=sb.indexOf("i"))!=-1)
{
    if(index>=5&&index<=25)sb.setCharAt(index,'Z')
}

您可以使用此正则表达式替换iZ

(?<=^.{4,25})i

所以,你的代码将是

input.replaceAll(aboveRegex,"Z")
于 2013-06-20T13:01:09.997 回答
0

你可以这样做(没有正则表达式): -

$str= "My home is a nice home in Paris but i will go to the home of some one else";
   for($i=5; $i<25; $i++) 
   if($str[$i]=='i')
         $str[$i] = 'Z';

         echo $str;

输出:-

我的家 Zs 一个 nZce 家 Zn Paris 但我会去别人家

于 2013-06-20T12:51:11.400 回答
0

在 Javascript 中

var str = 'My home is a nice home in Paris but i will go to the home of some one else.';

var result = str.replace(str.substring(5, 25), function (match) {
    return match.replace(/i/g, 'Z');
});

console.log(result);
于 2013-06-20T12:51:52.503 回答