日期:2014-05-17  浏览次数:20521 次

字符替换
有一段字符串:
<p center="" style="text-align: center"><img src="/upimage/rxd034 (1).jpg" /></p><p center="" style="text-align: center"><img  src="/upimage/rxd034 (2).jpg" /></p><p center="" style="text-align: center"><img  src="/upimage/rxd034 (3).jpg" /></p>


现在需要把字符里面的 rxd034 (1).jpg  , rxd034 (2).jpg  , rxd034 (3).jpg

中间的空格替换成 “%” 变成 rxd034%(1).jpg  rxd034%(2).jpg  rxd034%(3).jpg

用正则吗?怎么写,谢谢了。

------解决方案--------------------
string html = "...";
string[] found = Regex.Matches(html, @"\/upimage\/\w+\s\(\d+\).jpg").Cast<Match>().Select(x => x.Value).ToArray();
foreach (var item in found)
{
    html = html.Replace(item, item.Replace(" ", "%"));
}
------解决方案--------------------
(?<=<img\b[^>]*?src="/upimage/\w+)\s*(?=\(\d+\)\.jpg)



string yourhtml = "...";
yourhtml  = Regex.Replace(yourhtml, @"(?<=<img\b[^>]*?src="\/upimage\/\w+)\s*(?=\(\d+\)\.jpg)","%");

------解决方案--------------------

string str = "<p center=\"\" style=\"text-align: center\"><img src=\"/upimage/rxd034 (1).jpg\" /></p><p center=\"\" style=\"text-align: center\"><img  src=\"/upimage/rxd034 (2).jpg\" /></p><p center=\"\" style=\"text-align: center\"><img src=\"/upimage/rxd034 (3).jpg\" /></p>";
Console.WriteLine(Regex.Replace(str,"(<img[\\s]*src=\"/upimage/[^>]+)([ ]+)([^>]+\" />)","$1%$3"));

------解决方案--------------------
把整个这个当做一个字符串,然后用正则控制前后数据中的中坚空格,感觉正则控制起来比较稳定吧