我正在尝试使用lastindexof删除\之后的最后一个字符串,但我无法知道如何执行此操作。
这是我要解析的字符串的示例:
string path = "C:\Program Files\Google\";
string path2 = "C:\Program Files\Google\Chrome\";
我想删除路径中的Google或Chrome,但如果我使用lastindexof'\'则无效。那么在c#中执行此操作的最快或最标准的方法是什么。
编辑:这只是一个例子,我不是为路径工作。
答案 0 :(得分:1)
我建议你不要这样做 - 使用Directory.GetParent
来获取父目录:
string path2 = @"C:\Program Files\Google\Chrome\";
var parentFolder = Directory.GetParent(Path.GetDirectoryName(path2)).FullName;
答案 1 :(得分:1)
一种标准方法是使用System.IO.Directory.GetParent
。但请注意,如果路径具有尾随分隔符,则需要应用GetParent
两次。见http://msdn.microsoft.com/en-us/library/system.io.directory.getparent(v=vs.110).aspx
using System.IO;
if (path.EndsWith("\\"))
{
path = Directory.GetParent(Directory.GetParent(path).FullName).FullName;
}
else
{
path = Directory.GetParent(path).FullName;
}
更新:对于更一般的基于字符串的方法:
var a = @"a\b\c\";
var b = a.LastIndexOf("\\", a.Length-2);
var c = a.Substring(0, b);
LastIndexOf
允许使用从中向后看的起始索引。见http://msdn.microsoft.com/en-us/library/system.string.lastindexof(v=vs.110).aspx
答案 2 :(得分:0)
确定。这是你的答案。
string path2 = @"C:\Program Files\Google\Chrome\";
int count = 0;
int i = 0;
for (i = path2.Length; i > 0; i--)
{
if (path2[i-1] == '\\')
{
count++;
if(count == 2) //Change the condition according to your requirement.
break; //For example if you want upto last third "\" then put 3 in the condition
}
}
path2 = path2.Substring(0, i);
答案 3 :(得分:0)
TrimEnd('\\')
你的字符串,然后使用最后一个索引。