C# 如何检索正斜杠前后的字符

C# 如何检索正斜杠前后的字符,c#,C#,我有一个来自datareader的字符串: 我想得到文件名,这是第一个帐户 列表名是新的,列表地址是新的。这是我正在使用的代码: 如何检索站点地址和列表名称 //getting the file URL from the data reader string fileURL = dataReader["File URL"].ToString(); //getting the list address/path string listAdd = fileURL.Substring(fileUR

我有一个来自datareader的字符串:

我想得到文件名,这是第一个帐户 列表名是新的,列表地址是新的。这是我正在使用的代码: 如何检索站点地址和列表名称

//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对象获取各种位,例如

Authority-获取域名系统DNS主机名或IP地址以及服务器的端口号。 Host-获取此实例的主机组件 获取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类吗?正则表达式可能是最简单的方法,但不能确定最佳性能。您可以使用LastIndexOf获取字符串中最后一个/的索引,然后从后面开始工作…我已经尝试过了,但意识到我不能使用它,因为地址路径my并不总是与我在问题上使用的地址路径相同。如果字符串不是真的已知,我如何使用它。。。我从dataReader获取字符串,在这里我从SQL表填充,只需使用从dataReader读取的字符串:string str=dataReader[File URL].ToString;该字符串抛出一个System.IndexOutOfRangeExceptionException从dataReader[文件URL]抛出。请检查您是如何为读卡器获取数据的。我尝试使用这个段,但是uriu=new-UridataReader[File URL].ToString;引发异常dataReader[File URL]引发了类型为“System.IndexOutOfRangeException”的异常。您没有显示dataReader[File URL]背后的内容。ToString,因此我假设您已使该部分正常工作。我的解决方案根据前面提到的示例URI进行了测试http://win-167nve0l50/dev/dev/new/1st 账户在该行上放置断点,并检查datareader是否有正确的列名或列索引。
string listAdd = u.Segments[u.Segments.Length - 2];
string fileName = u.Segments[u.Segments.Length - 1];
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;
}