正则表达式如下:
"<img[^>]*src(?:\\s*=\\s*)(?:[\"']?)(?<src>[^\\s\"'>]*)(?:[\"']?)[^>]*>"
System.Collections.Specialized.StringCollection simg = new System.Collections.Specialized.StringCollection(); simg.Add(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']? [\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>"); string suffix = "_10x10.jpg"; foreach (string si in simg) { desc = Regex.Replace(desc, si, @"<img src='$1"+suffix+ "'/>", RegexOptions.IgnoreCase); } return desc;
你的正则看起来比我这个正规,我是这样写的,还需要一个foreach,我想问有哪个方法不需要遍历的?
如果你的图片名称比较规范, 直接 .Replace(".jpg",".jgp_10X10.jpg"); 正则都不需用。
这样不行的,.replace一次只能替换一个,并且根本无法知道有多少张图片,效率也低。
@潜龙池: 谁说.replace一次只能替换一个的
@潜龙池: 难道你是用js,就算是js,也有参数可以批量替换。
@dudu: 不好意思,是我记错了,不过.replace效率还是不如用正则吧,并且假如还有.png等其他格式的话还需要再用replace扫描文章一遍,或者你还有其他比较好的方法?
@幻天芒: 是的/**/gi ,这个地方g是全局扫描,i 表示忽略大小写