关于c#:在字符串中最后一次出现分隔符后删除字符

Remove characters after the last appearance of a delimiter in a string

是否有方法删除最后一次出现分隔符后字符串中的字符?

我已经研究了以下问题。

按最后一个分隔符拆分字符串-在本例中,省略最后一次出现之前的字符。但我需要的恰恰相反。

从C中的字符串中删除最后一个字符。优雅的方式?-这里删除第一次出现分隔符后的字符。

例如我有一根绳子

1
"D:\dir1\subdir1\subdir11\subdir111\file1.txt"

我期望的结果是

1
"D:\dir1\subdir1\subdir11\subdir111"

注意:这只是一个例子。在其他情况下,我也需要一个解决方案。


您可以使用String.Remove()方法。

1
2
string test = @"D:\dir1\subdir1\subdir11\subdir111\file1.txt";
string result = test.Remove (test.LastIndexOf ('\'));

存储在result中的值将为

1
"D:\dir1\subdir1\subdir11\subdir111"

您可以使用lastindexof轻松实现这一点

1
2
string str =@"D:\dir1\subdir1\subdir11\subdir111\file1.txt"
str= str.SubString(0,str.LastIndexOf("\"));

如果要查找一般的内容,请创建扩展方法

1
2
3
4
public static string GetStringBeforeLastIndex(this string str,string delimeter)
{
  return str.SubString(0,str.LastIndexOf(delimeter));
}

现在你只需要调用这个方法

1
2
3
4
5
string str =@"D:\dir1\subdir1\subdir11\subdir111\file1.txt"
    str = str.GetStringBeforeLastIndex("\"); you can pass any delimeter

 string str =@"
asdd-asdasd-sdfsdf-hfghfg"
        str = str.GetStringBeforeLastIndex("
-");


这应该是最安全的方法

1
2
string Pathname = @"D:\dir1\subdir1\subdir11\subdir111\file1.txt";
string Result = Path.GetDirectoryName(Pathname);