假设html源码中包含如下url
/aaa/aaa.htm
bbb/bbb.htm
../ccc/ccc.htm
./ddd/ddd.htmhttp://www.xxx.com/ccc/ccc.htm假设有一个基础url
http://www.yyy.com/yyy/我希望上面的路径经过转换后得到如下的路径:
http://www.yyy.com/aaa/aaa.htm
http://www.yyy.com/yyy/bbb/bbb.htm
http://www.yyy.com/ccc/ccc.htm
http://www.yyy.com/yyy/ddd/ddd.htm
http://www.xxx.com/ccc/ccc.htm我希望不要用太多的if语句来判断。不知道是否有简便的方法来处理这种路径问题?
/aaa/aaa.htm
bbb/bbb.htm
../ccc/ccc.htm
./ddd/ddd.htmhttp://www.xxx.com/ccc/ccc.htm假设有一个基础url
http://www.yyy.com/yyy/我希望上面的路径经过转换后得到如下的路径:
http://www.yyy.com/aaa/aaa.htm
http://www.yyy.com/yyy/bbb/bbb.htm
http://www.yyy.com/ccc/ccc.htm
http://www.yyy.com/yyy/ddd/ddd.htm
http://www.xxx.com/ccc/ccc.htm我希望不要用太多的if语句来判断。不知道是否有简便的方法来处理这种路径问题?
解决方案 »
- the type or namespace name could not be found怎么解决
- 未将对象引用设置到对象的实例
- 关于托盘,请进!
- 我定义了一个html的Table,想设Table中的单元的宽度怎么没有反应啊
- 如何解决richtextbox控件表格内换行的问题
- 我在C#中调用windown API播放声音,为什么声音和图像不同步?
- C#中如何实现给现有程序加windows标准标题栏?
- C#自带的资源编辑器里面,bmp文件竟然都不能选择颜色,不能调整大小
- 如何将vs.net2003下开发的应用程序编译成纯机器码的exe文件??
- 非常简单的正则表达式
- ContextMenuStrip如何显示多列菜单
- 请教:基于.NET云服务系统
Request.Url.AbsolutePath: /testweb/default.aspx
Request.Url.AbsoluteUri: http://www.test.com/testweb/default.aspx
Request.Url.Host: www.test.com
绝对路径
VirtualPathUtility.ToAbsolute("~/") = /
HttpRuntime.AppDomainAppVirtualPath = /
Request.ApplicationPath = /
Page.ResolveUrl("~") = /
MessageBox.Show(Path.Combine("https://www.bbs.net/bbs/", "/aaa/a.htm")); 得到的是/aaa/a.htm 而不是我期待的https://www.bbs.net/aaa.a.htm回复2楼。我不是在做asp.net程序。我是在走一个类似爬虫的东西。需要吧网页中的一些url转成绝对路径
Regex.Replace(input,"(?is)(?<=<(a|img)\b.*?(href|src)="")","http://www.a.com/");
另外这个正则看上去只能在原始url上加上一个固定的字符串。比如http://www.a.com/
但实际上基础url可能已经包含了一层或者多层路径。比如 http://www.a.com/aaa/这样的形式
我希望遇上从根目录开始的路径就丢弃基础url的aaa/来添加可能我描述的有点问题。总之需要达到如下效果
第一个字符串 http://www.a.com/a/
网页源码中可能出现的url比如:
<a href="/test1">test1</a>
<a href="text2">test2</a>
我希望得到如下结果:
http://www.a.com/test1
http://www.a.com/a/test2虽然用正则提取说所有url然后判断前缀可以得到同样的结果,但我总觉得这是一个下策。
Uri baseUri = new Uri("http://www.jiojio.cn");
Uri absoluteUri = new Uri( baseUri, "/images/logo.png");
absoluteUri.ToString();// http://www.jiojio.cn/images/logo.png
非常感谢楼上的各位。 public static string ConvertToAbsoluteUrls(string html)
{
return Regex.Replace(html, "(href|src)=[\"'](?<url>.*?)[\"']", new MatchEvaluator(ComputeReplacement));
}
public static String ComputeReplacement(Match m)
{
Uri absoluteUri = new Uri(baseUri, m.Groups["url"].ToString());
return String.Format("{0}=\"{1}\"", m.Groups["1"].ToString(), absoluteUri.ToString());
}