繁体   English   中英

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

[英]how to remove last part of string in c#

我试图删除字符串的最后一部分但失败了。这里名为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");

我们还应该检查字符的存在

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

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

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

Console.WriteLine(str);

要删除字符串的已知部分,您可以简单地使用替换。 在你的情况下:

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

使用这种方法,您不需要依赖字符串中分隔符字符的存在,结果总是在末尾没有分隔符字符。 此外,您可以使用分隔符作为参数轻松创建扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM