我试图删除字符串的最后一部分但是失败了。这是一个名为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);
答案 0 :(得分:6)
在框架中有预制功能
string str = @"D:\softwares\VS2012\newtext.txt";
string path = System.IO.Path.GetDirectoryName(str);
请注意,您的原始代码不起作用,因为您要从第一个反斜杠中删除,而不是从最后一个反斜杠中删除。替换此行以使代码正常工作
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。 此外,您可以轻松地使用定界符作为参数来创建扩展名。