看来真的是老了,摘两颗星星用了一年,想当年摘三颗星星也没用这么久
发在技术区就给个小问题吧
我尽量简化一下规则,类似于
http://www.test.com/main.aspx?a=12&b=34
这样的源字符串,参数a一定有且位置固定,要求如果有b=xxx,则替换为b=56,否则在结尾添加 &b=56,也就是
源字符串 期望结果
http://www.test.com/main.aspx?a=12&b=34 http://www.test.com/main.aspx?a=12&b=56
http://www.test.com/main.aspx?a=12 http://www.test.com/main.aspx?a=12&b=56
某天在一个帖子里看到的类似问题,我尽可以有各种方法来实现以上需求,但我的要求是,补全如下代码
string result = Regex.Replace(str, ...);
我要最简洁,最有创意的代码PS1:事实上我也没有太仔细的去考虑怎么样写才算简洁哈PS2:提前祝大家元旦快乐!新年快乐!
发在技术区就给个小问题吧
我尽量简化一下规则,类似于
http://www.test.com/main.aspx?a=12&b=34
这样的源字符串,参数a一定有且位置固定,要求如果有b=xxx,则替换为b=56,否则在结尾添加 &b=56,也就是
源字符串 期望结果
http://www.test.com/main.aspx?a=12&b=34 http://www.test.com/main.aspx?a=12&b=56
http://www.test.com/main.aspx?a=12 http://www.test.com/main.aspx?a=12&b=56
某天在一个帖子里看到的类似问题,我尽可以有各种方法来实现以上需求,但我的要求是,补全如下代码
string result = Regex.Replace(str, ...);
我要最简洁,最有创意的代码PS1:事实上我也没有太仔细的去考虑怎么样写才算简洁哈PS2:提前祝大家元旦快乐!新年快乐!
if (Regex.IndexOf('&', 0) > 0)
{
Regex = Regex.Remove(Regex.IndexOf('&', 0)) + "&b=56";
}
else
{
Regex = Regex + "&b=56";
}
string r;
int i=Regex.IndexOf('&', 0);
if ( i> 0)
{
r = Regex.Substring(i, 5); Regex= Regex.Replace(r,"&b=56");
}
else
{
Regex = Regex + "&b=56";
}
string result = Regex.Replace(str,"(?<=a=[0-9]+)(?:&b=[0-9]+)?","&b=56");
搞错了。。string result = Regex.Replace(str,"(?<=a=[0-9]+)(?:&b=[0-9]+)?(?=\\b)","&b=56");
string result = Regex.Replace(str,"(?<=a=[0-9]+)&b=[0-9]+(?=\\b)|(?<=a=[0-9]+(?:(?!&b=[0-9]+)[^\\s])*)(?=\\s|$)","&b=56");
string result = Regex.Replace(str,"a=([0-9]+)((&\\w+=[0-9]+){0,})(&b=[0-9]+)?","a=$1$2&b=56")
不知道还有没列简单的写法?不过比止戈兄的短点^_^
这个有问题啊。。如果b=XXX已经存在,是不会替换的,而是在最后加上&b=56
可以改成:
string result = Regex.Replace(str,"a=([0-9]+)((&(?:(?!b)\\w)+=[0-9]+)*)(&b=[0-9]+)?","a=$1$2&b=56");
这个只适用于str是单独一个地址时。。