内容如下:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<img height="257" src="http://www.xxx.com/img/2012/06/18/892185677421.jpg" width="247" border="0">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
<img height="257" src="http://www.xxx.com/img/2012/06/19/896585677400.jpg" width="247" border="0">cccccccccccccccccccccc
<img height="257" src="http://www.xxx.com/img/2012/06/20/896581237526.jpg" width="190" border="0">
ddddddddddddddddddddddddddddd要求如下:
找到所有img的图片如果图片宽度大于200的就设置成200,并把高度去掉,小的200的就保持不变替换后的效果如下:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<img src="http://www.xxx.com/img/2012/06/18/892185677421.jpg" width="200" border="0">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
<img src="http://www.xxx.com/img/2012/06/19/896585677400.jpg" width="200" border="0">cccccccccccccccccccccc
<img height="257" src="http://www.xxx.com/img/2012/06/20/896581237526.jpg" width="190" border="0">
ddddddddddddddddddddddddddddd
非常感谢大家的帮助,我想了好久想不出来。
注:不能用JS
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<img height="257" src="http://www.xxx.com/img/2012/06/18/892185677421.jpg" width="247" border="0">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
<img height="257" src="http://www.xxx.com/img/2012/06/19/896585677400.jpg" width="247" border="0">cccccccccccccccccccccc
<img height="257" src="http://www.xxx.com/img/2012/06/20/896581237526.jpg" width="190" border="0">
ddddddddddddddddddddddddddddd要求如下:
找到所有img的图片如果图片宽度大于200的就设置成200,并把高度去掉,小的200的就保持不变替换后的效果如下:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<img src="http://www.xxx.com/img/2012/06/18/892185677421.jpg" width="200" border="0">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
<img src="http://www.xxx.com/img/2012/06/19/896585677400.jpg" width="200" border="0">cccccccccccccccccccccc
<img height="257" src="http://www.xxx.com/img/2012/06/20/896581237526.jpg" width="190" border="0">
ddddddddddddddddddddddddddddd
非常感谢大家的帮助,我想了好久想不出来。
注:不能用JS
解决方案 »
- 求EM算法插补数据缺失的代码
- 有网络推广经验的高手请指教。。。
- winform程序如何调用google api?
- .net视频文件上传并截图,急
- 委托,反射,泛型都会经常用到吗
- Application的一个菜鸟问题啊
- 知道一个窗口的句柄,如何获得该窗口的进程ID
- 怎么用鼠标把文件拖动到Listview中 用什么事件,怎么得到拖动的文件
- 用C#OleDb访问db2数据库,做复杂的处理常常返回中断异常,怎么解决?
- 请问我的Install.cs中的public override void Uninstall(IDictionary savedState)不执行?
- 如何在一个循环里对多个控件赋值?
- winfrom窗体右上角的“?”帮助按钮怎么添加
m=>int.Parse(m.Value)>=200?"200":m.Value);
private string CapText(Match m)
{
if (Convert.ToInt32(m.Value) > 200)
return "200";
else
return m.Value;
} private void button10_Click(object sender, EventArgs e)
{
StreamReader reader = new StreamReader("c:\\1.txt",Encoding.Default);
string source = reader.ReadToEnd();
Regex reg = new Regex(@"(?is)(?<=<img[^>]*?width="").*?(?="" border=""0"">)");
source = reg.Replace(source, new MatchEvaluator(CapText));
}
谢谢,这样宽带确实是可以,但是必须要把高度height 去掉,要不然图片就会变形了
string pattern = @"(<img[^>]*?)(height=(['""])\d+\3)([^>]*?width=(['""]))(\d+)\5([^>]*?>)";
tempStr = Regex.Replace(tempStr, pattern, a =>
{
if (int.Parse(a.Groups[6].Value) > 200)
{
return a.Groups[1].Value + a.Groups[4].Value + "200" + a.Groups[7].Value;
}
else
return a.Value;
});
Regex.Replace(
原字符串,
@"(?is)(?<=<img[^>]*)(\s*height="")(\d+)("")([^>]+?)(\s*width="")(\d+)("")(?=[^>]*>)",
m =>
{
return
int.Parse(m.Groups[6].Value) > 200
? m.Groups[4].Value + m.Groups[5].Value + "200" + m.Groups[7].Value
: m.Value;
}
);
可惜,差点,我改改yourhtml=Regex.Replace(yourhtml,@"(?i)(<img\b[^>]*?)(width=)""(?:[2-9]\d{2,}|\d{4,})""([^>]*?>)","$1$2$3\"200\"$4");
yourhtml=Regex.Replace(yourhtml,@"height="\d+"\s*","");
就可以了。
可惜,差点,我改改,改成下面的这个(不知道是不是发重了,发重了,看下面这条。)。yourhtml=Regex.Replace(yourhtml,@"(?i)(<img\b[^>]*?)(width=)""(?:[2-9]\d{2,}|\d{4,})""([^>]*?>)","$1$2\"200\"$3");
yourhtml=Regex.Replace(yourhtml,@"height="\d+"\s*","");
就可以了。
去掉height的,改超过200的宽的图片为200,yourhtml=Regex.Replace(yourhtml,@"height="\d+"\s*","");
去掉宽没有超过200的图片的height
你的这个正则是匹配不到width小于200的图片,因此你也就去不了,宽小于200图片的高!
如果没这个问题,我倒是很想看看一个正则怎么搞定,请多指教。
string str = @"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<img height=""257"" src=""http://www.xxx.com/img/2012/06/18/892185677421.jpg"" width=""247"" border=""0"">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
<img height=""257"" src=""http://www.xxx.com/img/2012/06/19/896585677400.jpg"" width=""247"" border=""0"">cccccccccccccccccccccc
<img height=""257"" src=""http://www.xxx.com/img/2012/06/20/896581237526.jpg"" width=""190"" border=""0"">
ddddddddddddddddddddddddddddd";
string result = Regex.Replace(str, @"(?<=<img[^>]*?)height=""[^""]+""([^>]*?)width=""([^""]+)""(?=[^>]*?>)", delegate(Match m)
{
return int.Parse(m.Groups[2].Value) > 200 ? m.Groups[1].Value + "width=\"200\"" : m.Value;
});
Console.WriteLine(result);
/*
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<img src="http://www.xxx.com/img/2012/06/18/892185677421.jpg" width="200" borde
r="0">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
<img src="http://www.xxx.com/img/2012/06/19/896585677400.jpg" width="200" borde
r="0">cccccccccccccccccccccc
<img height="257" src="http://www.xxx.com/img/2012/06/20/896581237526.jpg" width
="190" border="0">
ddddddddddddddddddddddddddddd
*/
看清楚楼主的要求哦所以width小于200的根本没必要去匹配
string str = @"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<img height=""257"" src=""http://www.xxx.com/img/2012/06/18/892185677421.jpg"" width=""247"" border=""0"">bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
<img height=""257"" src=""http://www.xxx.com/img/2012/06/19/896585677400.jpg"" width=""247"" border=""0"">cccccccccccccccccccccc
<img height=""257"" src=""http://www.xxx.com/img/2012/06/20/896581237526.jpg"" width=""190"" border=""0"">
ddddddddddddddddddddddddddddd";
string result = Regex.Replace(str, @"(?<=<img[^>]*?)height=""[^""]+""([^>]*?)width=""[2-9]\d{2,}""(?=[^>]*?>)", "$1width=\"200\"");
Console.WriteLine(result);
namespace img
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string regex = "<img( height=\"257\") ([\\s\\S]+?)\" width=\"(\\d+)\" border=\"0\">";
string str1 = "<img height=\"257\" src=\"http://www.xxx.com/img/2012/06/18/892185677421.jpg\" width=\"247\" border=\"0\">";
string str2 = "<img height=\"257\" src=\"http://www.xxx.com/img/2012/06/18/892185677421.jpg\" width=\"20\" border=\"0\">"; public string GetImg(string regex, string Text)
{
string str = "<img ";
Regex rg = new Regex(regex);
MatchCollection mc = rg.Matches(Text);
foreach (Match m in mc)
{
if (int.Parse(m.Groups[3].Value) > 200)
str += m.Groups[2].Value.ToString() + "\" width=\"200\" border=\"0\">";
else
str = Text;
}
return str;
} private void button1_Click(object sender, EventArgs e)
{
str1 = GetImg(regex, str1);
label1.Text = str1;
str2 = GetImg(regex, str2);
label2.Text = str2; }慢了点啊
即如:
width="650" 或 width=650这时用正侧如何去掉width 和height 效果:
<img src="http://www.xxx.com/img/2012/06/18/957812335695.jpg">
(width=)(['"]?)(?:[2-9]\d{2}|\d{4,})\5([^>]*?>)","$1$3$4$2 200$2$6");
<img src=""http://www.xxx.com/img/2012/06/18/957812335695.jpg"" width=650 height=108>
<img src=""http://www.xxx.com/img/2012/06/18/957812335695.jpg"" width='650' height='108'>";
string result = Regex.Replace(str, @"(?i)(?<=<img\b[^>]*?)(?:width|height)=(['""]?)[^'""\s>]+\1(?=[^>]*?>)", "");
Console.WriteLine(result);