在字符串中删除最后一个分隔符后的字符。

4

有没有一种方法可以在定界符的最后一次出现之后删除字符串中的字符?

我看了以下问题。

通过最后一个分隔符拆分字符串 - 在这种情况下,最后一次出现前面的字符被省略了。但我只需要相反的结果。

从C#字符串中删除最后的字符。一种优雅的方式? - 在这里,删除了定界符第一次出现之后的字符。

例如,我有一个字符串

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

我期望的结果是
"D:\dir1\subdir1\subdir11\subdir111"

注意:这只是一个例子。我需要一个适用于其他情况的解决方案。
3个回答

6
您可以使用 String.Remove() 方法。
string test = @"D:\dir1\subdir1\subdir11\subdir111\file1.txt";
string result = test.Remove (test.LastIndexOf ('\\'));
< p > 存储在 result 中的值将会是:

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

2
您可以很容易地使用 LastIndexOf 实现此目标。
string str =@"D:\dir1\subdir1\subdir11\subdir111\file1.txt"
str= str.SubString(0,str.LastIndexOf("\\"));

如果您正在寻找通用的东西,那么可以创建扩展方法。
public static string GetStringBeforeLastIndex(this string str,string delimeter)
{
  return str.SubString(0,str.LastIndexOf(delimeter));
}

现在你只需要调用这个方法。
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
这应该是最安全的方式。
string Pathname = @"D:\dir1\subdir1\subdir11\subdir111\file1.txt";
string Result = Path.GetDirectoryName(Pathname);

1
那只是一个例子(文件路径)。我想要的解决方案适用于任何字符串。例如,我可以有一个像“edfe-fefe-geer-edew”这样的字符串。结果必须是“edfe-fefe-geer-”。 - kakkarot
@madmax 上面的例子中没有 '\' - CinCout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接