我有这个字符串,该字符串来自datareader:http://win-167nve0l50/dev/dev/dev/dev/new/new/new/1st帐户
我想要获取文件名,即"第一帐户"列表名称,即"新"和列表地址,即" http://win-167nve0l50/dev/dev/"。这是我正在使用的代码:我如何检索站点地址和列表名称。
//getting the file URL from the data reader
string fileURL = dataReader["File URL"].ToString();
//getting the list address/path
string listAdd = fileURL.Substring(fileURL.IndexOf("/") + 1);
//getting the file name
string fileName = fileURL.Substring(fileURL.LastIndexOf("/") + 1);
您可以使用URI类轻松获取各种信息
var uri = new Uri(dataReader["File URL"].ToString());
然后,您可以从URI对象获得各种位,例如。
-
Uri.Authority
-获取域名系统(DNS(主机名或IP地址以及服务器的端口号。 -
Uri.Host
-获取此实例的主机组件 -
Uri.GetLeftPart()
-获取URI实例的指定部分。
如果与URI打交道,请使用属于类...
Uri u = new Uri(dataReader["File URL"].ToString());
...并通过段数组访问路径的所需部分
string listAdd = u.Segments[3]; // remove trailing '/' if needed
string fileName = u.Segments[4];
...或如果您需要确保处理任意路径长度
string listAdd = u.Segments[u.Segments.Length - 2];
string fileName = u.Segments[u.Segments.Length - 1];
您应该使用Uri
类
它的主要目的是处理组成的资源string
s。
您可以使用:
-
Uri.Host
获得主机地址字符串 -
PathAndQuery
获取服务器上文件的绝对路径,并带有请求发送的查询信息
这里的所有属性
您也可以使用Regex:
进行操作string str = "http://win-167nve0l50/dev/dev/new/1st Account";
Regex reg = new Regex("^(?<address>.*)\/(?<list>[^\/]*)\/(?<file>.*)$");
var match = reg.Match(str);
if (match.Success)
{
string address = match.Groups["address"].Value;
string list = match.Groups["list"].Value;
string file = match.Groups["file"].Value;
}