如何删除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);

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

在框架中有一个预制函数

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);