C#中从URL中获取路径的简单方法:new Uri(url).AbsolutePath

今天在写代码时遇到这样一个问题:

如何从字符串 "http://job.cnblogs.com/images/job_logo.gif" 中得到 "/images/job_logo.gif"?

对这个问题的解决方法的要求是:

1. 只能调用 .NET 类库中的 API;

2. 用最简单的方法实现。

开始我想到的是 System.IO.Path,代码如下:

Path.GetDirectoryName(url) + "\\" + Path.GetFileName(url);

得到的是错误的结果:

http:\job.cnblogs.com\images\job_logo.gif

接着想到的是 System.Web.VirtualPathUtility,代码如下:

VirtualPathUtility.GetDirectory(url) + VirtualPathUtility.GetFileName(url);

运行报错:

System.ArgumentException : The relative virtual path 'http:/job.cnblogs.com/images/job_logo.gif' is not allowed here.

要将 "http://job.cnblogs.com/images/job_logo.gif" 改为 "/images/job_logo.gif" 才能得到正确的结果。

后来,在 stackoverflow 上受到启发, 用 System.Uri 轻松搞定!代码如下:

new Uri(url).AbsolutePath;

本文URL地址:http://www.bianceng.cn/Programming/csharp/201410/45477.htm

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索http
, gif
, 代码
, system
, images
cnblogs
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-11-02 11:42:45

C#中从URL中获取路径的简单方法:new Uri(url).AbsolutePath的相关文章

Mysql中 show table status 获取表信息的方法_Mysql

使用方法 mysql>show table status; mysql>show table status like 'esf_seller_history'\G; mysql>show table status like 'esf_%'\G; 样例: mysql>show table status like 'esf_seller_history'\G; 1.Name 表名称 2.Engine: 表的存储引擎 3.Version: 版本 4.Row_format 行格式.对于My

GNU/Linux中动态库的搜索路径的指定方法汇总

动态链接时.执行时搜索路径顺序: 1.编译目标代码时使用-L指定的动态库搜索路径: 2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径: 3.配置文件/etc/ld.so.conf中指定的动态库搜索路径: 4.默认的动态库搜索路径/lib: 5.默认的动态库搜索路径/usr/lib. 以上的3-5步中,不再需要手动地指定动态库搜索路径了, 有一个可以进行配置更新默认的搜索路径的命令: ldconfig ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及

android中知道图片name时获取图片的简单方法_Android

1. 图片放在sdcard中, 复制代码 代码如下: Bitmap imageBitmap = BitmapFactory.decodeFile(path)  (path 是图片的路径,跟目录是/sdcard) 2. 图片在项目的res文件夹下面 复制代码 代码如下: //得到application对象 ApplicationInfo appInfo = getApplicationInfo(); //得到该图片的id(name 是该图片的名字,"drawable" 是该图片存放的目录

android中知道图片name时获取图片的简单方法

1. 图片放在sdcard中, 复制代码 代码如下: Bitmap imageBitmap = BitmapFactory.decodeFile(path)  (path 是图片的路径,跟目录是/sdcard) 2. 图片在项目的res文件夹下面 复制代码 代码如下: //得到application对象 ApplicationInfo appInfo = getApplicationInfo(); //得到该图片的id(name 是该图片的名字,"drawable" 是该图片存放的目录

iOS App开发中通过UIDevice类获取设备信息的方法_IOS

UIDevice提供了多种属性.类函数及状态通知,帮助我们全方位了解设备状况.从检测电池电量到定位设备与临近感应,UIDevice所做的工作就是为应用程序提供用户及设备的一些信息.UIDevice类还能够收集关于设备的各种具体细节,例如机型及iOS版本等.其中大部分属性都对开发工作具有积极的辅助作用.下面的代码简单的使用UIDevice获取手机属性. 简单示例:设备相关信息的获取   NSString *strName = [[UIDevice currentDevice] name];   N

IE8中ajax 跨域获取html模板解决方法

报错: statusText :"No Transport"   1,只有当浏览器是IE8 时才引入js: Html代码   <!--[if IE 8]>       <script type="text/javascript"               src="http://${static_domain}/chanjet/js/lib/common/jQuery.XDomainRequest.js"></sc

PHP中创建和验证哈希的简单方法实探_php技巧

 PHP 5.5.0 带来了一份完整的全新特性与函数的列表.全新API之一就是Password Hashing API.它包含4个函数:password_get_info(), password_hash(), password_needs_rehash(),和password_verify().让我们分步来了解每个函数. 我们首先讨论password_hash()函数.这将用作创建一个新的密码的哈希值.它包含三个参数:密码.哈希算法.选项.前两项为必须的.你可以根据下面的例子来使用这个函数:

C语言中对字母进行大小写转换的简单方法_C 语言

C语言tolower()函数:将大写字母转换为小写字母头文件: #include <ctype.h> 定义函数: int toupper(int c); 函数说明:若参数 c 为小写字母则将该对应的大写字母返回. 返回值:返回转换后的大写字母,若不须转换则将参数c 值返回. 范例:将s 字符串内的小写字母转换成大写字母. #include <ctype.h> main(){ char s[] = "aBcDeFgH12345;!#$"; int i; print

在Oracle数据库中同时更新两张表的简单方法_oracle

以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的 今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2.其中a2和b2是关联的,想把A中的字段a1更新成B中的b1 理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误.而且确实还有些小小细节没有注意到. 首先上测试数据 表1,ZZ_TEST1 表2,ZZ_TEST2 要把表一的text更新成表二的text1值,对应