一个可能很简单的正式表达式求助

kncomputer 2009-06-14 06:18:03
没办法,我对正式表达式真的很差。

要处理的字符有可能是:
""(空)
"p=1"
"ID=e2798a59&xx=79d5&bb=4833-9c57&cc=87d46a8&bb=b907a"
"ID=e2798a59&xx=79d5&bb=4833-9c57&cc=87d46a8&bb=b907a&p=2"
"ID=e2798a59&xx=79d5&p=4&bb=4833-9c57&cc=87d46a8&bb=b907a"

要求:
对上述任何一种字符串的可能,
查找是否有p=x,
如果找不到,为字符串加上"p=0"
如果找到,还要得到x的值,让y=x+1之后,再把"p=y"替换之前的p=x

不知我这么写明不明白。

谢谢

...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kncomputer 2009-06-15
  • 打赏
  • 举报
回复
starj1 大侠!五体投地啊!
佩服得不行!

Study_Work_2009 2009-06-14
  • 打赏
  • 举报
回复
up
starj1 2009-06-14
  • 打赏
  • 举报
回复
            string[] sT =
{
"",
"p=1" ,
"ID=e2798a59&xx=79d5&bb=4833-9c57&cc=87d46a8&bb=b907a" ,
"ID=e2798a59&xx=79d5&bb=4833-9c57&cc=87d46a8&bb=b907a&p=2" ,
"ID=e2798a59&xx=79d5&p=4&bb=4833-9c57&cc=87d46a8&bb=b907a"
};
const string sIni = "p=0";
const string sReg = @"\bp=(?<a>\d+)";
System.Text.RegularExpressions.Regex reT = new System.Text.RegularExpressions.Regex(sReg);
for (Int32 I = 0; I < sT.Length; I++)
{
if (sT[I].Length > 0)
{
System.Text.RegularExpressions.MatchCollection mcT = reT.Matches(sT[I]);
if (mcT.Count > 0)
{
Int32 J = Int32.Parse(mcT[0].Groups["a"].Value) + 1;
sT[I] = sT[I].Replace(mcT[0].Value, "p=" + J.ToString());
}
else
{
sT[I] = sT[I] + "&" + sIni;
}
}
else
{
sT[I] = sIni;
}
System.Console.WriteLine(sT[I]);
netstray 2009-06-14
  • 打赏
  • 举报
回复
有点复杂哈,帮你顶
y82907966 2009-06-14
  • 打赏
  • 举报
回复
回帖是一种美德!每天回帖即可获得 10 分可用分!

110,537

社区成员

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

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

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