如何在正斜杠之前和之后检索字符

时间:2017-06-28 10:40:14

标签: c#

我有这个来自datareader的字符串:http://win-167nve0l50/dev/dev/new/1st Account

我想获取文件名,即“第一帐户” 列表名称为“new”,列表地址为“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);

4 个答案:

答案 0 :(得分:1)

您可以使用Uri Class

轻松获取各种信息
var uri = new Uri(dataReader["File URL"].ToString());

然后你可以从Uri对象获得各种位,例如。

  • Uri.Authority - 获取域名系统(DNS)主机名或IP地址以及服务器的端口号。
  • Uri.Host - 获取此实例的主机组件
  • Uri.GetLeftPart() - 获取Uri实例的指定部分。

答案 1 :(得分:0)

如果与Uri打交道,请使用相应的班级......

Uri u = new Uri(dataReader["File URL"].ToString());

...并通过Segments数组

访问路径的所需部分
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];

答案 2 :(得分:0)

您应该使用Uri班级 它的主要目的是处理组合资源string

您可以使用:

  • Uri.Host获取主机地址字符串

  • PathAndQuery获取服务器上文件的绝对路径以及随请求发送的查询信息

所有properties here

答案 3 :(得分:0)

您也可以使用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;
}