字符替换
有一段字符串:
<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"));
------解决方案--------------------把整个这个当做一个字符串,然后用正则控制前后数据中的中坚空格,感觉正则控制起来比较稳定吧