regex.replace()

pmars 2011-11-01 03:57:43
需求:一个字符串里面有 中文(\u4e00-\u9fa5) 大写字母(A-Z) 小写字母(a-z) 数字(\d) 他们各自分为一组,如字符串:“我们shiZHONGguo1234人”其中 我们 是一组,shi 是一组……
现在我的要求就是在他们换组(例如:从中文变成字母了)的地方加入一个字符*
处理之后的结果就是:我们*shi*ZHONG*guo*1234*人
不知道我说明白了没有,求正则大神教教我!

...全文
72 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pmars 2011-11-01
  • 打赏
  • 举报
回复
ca,没有给1L分,抱歉了!
yy2433720 2011-11-01
  • 打赏
  • 举报
回复
呵呵 给我一点分啊
pmars 2011-11-01
  • 打赏
  • 举报
回复
ca,这么容易就被你们搞定了,伤死我了!
刚才还去找猫咪了,嗨!
一会过来结贴!
q107770540 2011-11-01
  • 打赏
  • 举报
回复

void Main()
{
string str="我们shiZHONGguo1234人";

Regex reg=new Regex(@"([a-z]+|[A-Z]+|\d+|[\u4e00-\u9fa5]+)",RegexOptions.IgnorePatternWhitespace);
var arry=reg.Split(str).Where(s=>s.Length>0).ToArray();
Console.WriteLine(string.Join("*",arry));
//我们*shi*ZHONG*guo*1234*人
}
  • 打赏
  • 举报
回复

string tempStr = "我们shiZHONGguo1234人";
string pattern = @"(?m)(?=([a-z]+|[A-Z]+|\d+|[\u4e00-\u9fa5]+))\1";
Regex reg=new Regex (pattern);

string result = reg.Replace(tempStr, m => { return "*" + m.Value; }).TrimStart('*');//输出 我们*shi*ZHONG*guo*1234*人
  • 打赏
  • 举报
回复
Response.Write(Regex.Replace("我们shiZHONGguo1234人", 
@"[\u4e00-\u9fa5]+|[a-z]+|[A-Z]+|\d+",
"$0*").TrimEnd('*'));
/*
我们*shi*ZHONG*guo*1234*人
*/
jsyhello 2011-11-01
  • 打赏
  • 举报
回复
路过,学习,帮你up

110,555

社区成员

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

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

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