c# 正则匹配后替换,同一个词替换为不同的词

ohyoyo2014 2014-06-13 08:46:19


string content="这是中国一个中国二个中国";
Regex r1 = new Regex(@"("中国 ")");
MatchCollection matchCollection = r1.Matches(content);
foreach (Match m in matchCollection)
{
将匹配出来的中国随机替换为世界,地球,宇宙,或不替换(根据随机数判断) , 不能将全部中国替换为一个词.
}



求教如何实现呢?
...全文
429 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ffwyc 2014-08-01
  • 打赏
  • 举报
回复
引用 10 楼 smthgdin 的回复:
[quote=引用 8 楼 ffwyc 的回复:] 我也遇到这个问题了,我在想什么方法可以实现先匹配第一次然后替换第一次匹配的结果,再查找匹配再替换,每次用来替换的内容都不一样,但被匹配并且替换的内容都是同一个词,有什么好的方法可以解决呢?
string content="这是中国一个中国二个中国"; Regex r1 = new Regex(@"中国"); string s=r1.Replace(content,"aa",1); -- 把这个改成一个方法不就行了?“aa”是方法参数。[/quote] 恩,对的,后面才发现,count那边设置下就行了,谢谢回复哈~
ffwyc 2014-08-01
  • 打赏
  • 举报
回复
引用 9 楼 Z65443344 的回复:
[quote=引用 8 楼 ffwyc 的回复:] 我也遇到这个问题了,我在想什么方法可以实现先匹配第一次然后替换第一次匹配的结果,再查找匹配再替换,每次用来替换的内容都不一样,但被匹配并且替换的内容都是同一个词,有什么好的方法可以解决呢?
有参数让它只匹配一次啊[/quote] 嗯嗯,谢谢,我那时候仔细看了下一楼的回答找到那个方法了谢谢~
於黾 2014-06-19
  • 打赏
  • 举报
回复
引用 8 楼 ffwyc 的回复:
我也遇到这个问题了,我在想什么方法可以实现先匹配第一次然后替换第一次匹配的结果,再查找匹配再替换,每次用来替换的内容都不一样,但被匹配并且替换的内容都是同一个词,有什么好的方法可以解决呢?
有参数让它只匹配一次啊
ffwyc 2014-06-19
  • 打赏
  • 举报
回复
我也遇到这个问题了,我在想什么方法可以实现先匹配第一次然后替换第一次匹配的结果,再查找匹配再替换,每次用来替换的内容都不一样,但被匹配并且替换的内容都是同一个词,有什么好的方法可以解决呢?
smthgdin_020 2014-06-19
  • 打赏
  • 举报
回复
引用 8 楼 ffwyc 的回复:
我也遇到这个问题了,我在想什么方法可以实现先匹配第一次然后替换第一次匹配的结果,再查找匹配再替换,每次用来替换的内容都不一样,但被匹配并且替换的内容都是同一个词,有什么好的方法可以解决呢?
string content="这是中国一个中国二个中国"; Regex r1 = new Regex(@"中国"); string s=r1.Replace(content,"aa",1); -- 把这个改成一个方法不就行了?“aa”是方法参数。
iyomumx 2014-06-15
  • 打赏
  • 举报
回复
oop_2637780136 2014-06-15
  • 打赏
  • 举报
回复
<appSettings> <add key="conStr" value="Server=.;DataBase=db_Blog;uid=sa;pwd="/> </appSettings> <RewriterConfig> <Rules> <!-- Rules for Blog Content Displayer --> <RewriterRule> <LookFor>~/(\d+)\.aspx</LookFor> <SendTo>~/ST_show.aspx?id=$1</SendTo> </RewriterRule> <RewriterRule> <LookFor>~/BlogIndex_(.*)_(\d+)\.aspx</LookFor> <SendTo>~/BlogIndex.aspx?c_id=$2&name=$1</SendTo> </RewriterRule> <RewriterRule> <LookFor>~/BlogIndex_(.*)\.aspx</LookFor> <SendTo>~/BlogIndex.aspx?name=$1</SendTo> </RewriterRule> </Rules> </RewriterConfig>
  • 打赏
  • 举报
回复
string content = "这是中国一个中国二个中国"; content = Regex.Replace(content, @"(?<=中国.*?)中国", t => "世界,地球,宇宙,中国".Split(',') .OrderBy(tt => Guid.NewGuid()).First()); Console.WriteLine(content);
  • 打赏
  • 举报
回复
如果你不会Replace,不会Split,不会其它基本的字符串查找和处理操作,只会“可怜的正则”会变成祥林嫂的。
md5e 2014-06-13
  • 打赏
  • 举报
回复
用正则以“中国”分划数组得string[] ary={"这是","一个","二个"} 然后再用合并,每个单元随机加上世界,地球,宇宙 注意:Regex里有个方法是以正则分划数组的
wind_cloud2011 2014-06-13
  • 打赏
  • 举报
回复
string content="这是中国一个中国二个中国"; Regex r1 = new Regex(@"中国"); string s=r1.Replace(content,"aa",2);
tcmakebest 2014-06-13
  • 打赏
  • 举报
回复
Regex.Replace 有一种用法是带 Count 参数的, 传入1可以只替换一个, 多替换几次,每次传入随机的替换字符串.

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧