我有这个来自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);
答案 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)
答案 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;
}