如何在前进斜线之前和之后检索字符

  • 本文关键字:之后 检索 字符 c#
  • 更新时间 :
  • 英文 :


我有这个字符串,该字符串来自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
它的主要目的是处理组成的资源strings。

您可以使用:

  • 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;
}

最新更新