如何删除c中字符串的最后一部分
本文关键字:字符串 最后 一部分 何删除 删除 | 更新日期: 2023-09-27 18:20:44
我试图删除字符串的最后一部分,但失败了。这里的字符串名为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);
在框架中有一个预制函数
string str = @"D:'softwares'VS2012'newtext.txt";
string path = System.IO.Path.GetDirectoryName(str);
(参考)
请注意,您的原始代码不起作用,因为您删除的是第一个反斜杠,而不是最后一个。替换这一行使您的代码工作
str = str.Remove(str.LastIndexOf(''''));
尝试使用System.IO.Path.GetDirectoryName(string)
:
string dirname= System.IO.Path.GetDirectoryName(@"D:'softwares'VS2012'newtext.txt");
要删除字符串的已知部分,只需使用Replace。在您的情况下:
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('''')"方法已经和remove一起被建议了。
如果你想使用分隔符方法,那么根据分隔符字符而不是字符串格式(在你的情况下是路径格式),LastIndexOff(char)是最好的选择。
尽管您也可以将字符串拆分为一个数组,然后在删除最后一个元素后重新加入数组:
var delmimter = '''';
var strAy = str.Split(char);
str = String.Join('''', strAy.SkipLast(1).ToArray());
使用此方法,您不需要依赖于字符串中是否存在分隔符字符,并且结果总是末尾没有分隔符字符。此外,您可以很容易地创建一个以分隔符作为参数的扩展。
我们应该检查字符是否也存在
string str = @"D:'softwares'VS2012'newtext.txt";
int rstr = str.LastIndexOf('''');
if (rstr>0) str= str.Remove(rstr);
Console.WriteLine(str);