如何删除c#中字符串的最后一部分

时间:2015-11-04 18:32:23

标签: c# .net-4.0 console-application

我试图删除字符串的最后一部分但是失败了。这是一个名为D:\software\VS2012\newtext.txt的字符串,我想修剪字符串的最后一部分,所以这里newtext.txt。我应该得到D:\software\VS2012但是如何在c#中执行它。当我尝试它时,删除所有包含'\'的字符串。这是我在c#

中所做的
string str = @"D:\softwares\VS2012\newtext.txt";
           str= str.Remove(str.IndexOf('\\'));
            Console.WriteLine(str);

4 个答案:

答案 0 :(得分:6)

在框架中有预制功能

string str = @"D:\softwares\VS2012\newtext.txt";
string path = System.IO.Path.GetDirectoryName(str);

Reference

请注意,您的原始代码不起作用,因为您要从第一个反斜杠中删除,而不是从最后一个反斜杠中删除。替换此行以使代码正常工作

str = str.Remove(str.LastIndexOf('\\'));

答案 1 :(得分:4)

尝试使用System.IO.Path.GetDirectoryName(string)

string dirname= System.IO.Path.GetDirectoryName(@"D:\softwares\VS2012\newtext.txt");

答案 2 :(得分:0)

我们也应该检查char的存在

string str = @"D:\softwares\VS2012\newtext.txt";

int rstr = str.LastIndexOf('\\');

if (rstr>0) str= str.Remove(rstr);

Console.WriteLine(str);

答案 3 :(得分:0)

要删除字符串的已知部分,只需使用“替换”即可。 就您而言:

str = str.Replace("\\newtext.txt", ""); //this will give you the same result of the System.IO.Path.GetDirectoryName already suggested by gmiley, but it's more in a string context as per your question

尽管如果要通过最后遇到的已知字符删除字符串的最后部分,则建议的“ LastIndexOff('\')”方法与删除一起已建议使用。

如果要使用定界符方法,则取决于定界符而不是字符串格式(在您的情况下为路径格式),LastIndexOff(char)是最佳选择。

尽管您也可以将字符串拆分为一个数组,然后在删除最后一个元素后重新加入该数组:

var delmimter = '\\';
var strAy = str.Split(char);
str = String.Join('\\', strAy.SkipLast(1).ToArray());

使用此方法,您不必依赖字符串中定界符char的存在,结果始终是末尾没有定界符char。 此外,您可以轻松地使用定界符作为参数来创建扩展名。