木子屋 Dnawo's BLOG

使用Regex.Replace引发的错误

👤 dnawo 📅 2009-04-09 👁 4011 👍 0 💬 0 🔄 本站原创
需求:将字符串"http://www.mzwu.com/?key={md5:admin888}"中的"{md5:admin888}"用"admin888"的MD5加密结果替换。

说明:"admin888"正确的加密结果应为:7FEF6171469E80D32C0559F88B377245

错误的代码:
Regex.Replace("http://www.mzwu.com/?key={md5:admin888}", @"{md5:(\w+)}", System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("$1", "MD5"))

返回的结果为:http://www.mzwu.com/?key=06D3730EFC83058F497D3D44F2F364E3

分析:加密比替换先执行,上边的执行过程实际上先将"$1"加密成"06D3730EFC83058F497D3D44F2F364E3",再用它替换"{md5:admin888}",而不是先将"$1"替换成"admin888"再加密之后替换。正确的代码为:
Match match = Regex.Match("http://www.mzwu.com/?key={md5:admin888}", @"{md5:([\w=&]+)}");
if (match.Success)
{
    Response.Write(Regex.Replace("http://www.mzwu.com/?key={md5:admin888}", @"{md5:([\w=&]+)}", System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(match.Groups[1].ToString(), "MD5")));
}

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 菜单项图像和文本显示方式设置 下一篇 → IIS网站服务器性能优化指南