select一个string的特定部分C#

我试图创build一个新的string,从现有的string,例如删除某些字符

string path = "C:\test.txt" 

所以string“pathminus”将取出“C:\”例如

 string pathminus = "test.txt" 

字符串类提供了各种方式来做到这一点。

如果您想通过删除前三个字符来将“C:\ test.txt”更改为“test.txt”:

 path.Substring(3); 

如果你想从字符串的任何地方删除“C:\”:

 path.Replace("C:\", ""); 

或者如果你特别想要文件名,不管路径多长时间:

 Path.GetFileName(path); 

根据你的意图,有很多方法可以做到这一点。 我更喜欢使用静态类Path

使用Path.GetFileName

例如:

 string pathminus = Path.GetFileName(path); 

有很多方法可以删除字符串的某个部分。 这是几种方法来做到这一点:

 var path = @"C:\test.txt"; var root = @"C:\"; 

使用string.Remove()

 var pathWithoutRoot = path.Remove(0, root.Length); Console.WriteLine(pathWithoutRoot); // prints test.txt 

使用string.Replace()

 pathWithoutRoot = path.Replace(root, ""); Console.WriteLine(pathWithoutRoot); // prints test.txt 

使用string.Substring()

 pathWithoutRoot = path.Substring(root.Length); Console.WriteLine(pathWithoutRoot); // prints test.txt 

使用Path.GetFileName()

 pathWithoutRoot = Path.GetFileName(path); Console.WriteLine(pathWithoutRoot); // prints test.txt 

你也可以使用正则表达式来查找和替换字符串的一部分,但这有点难度。 你可以阅读MSDN关于如何在C#中使用正则表达式。

下面是一个关于如何使用string.Remove()string.Replace()string.Substring()Path.GetFileName()Regex.Replace()的完整示例:

 using System; using System.IO; using System.Text.RegularExpressions; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { var path = @"C:\test.txt"; var root = @"C:\"; var pathWithoutRoot = path.Remove(0, root.Length); Console.WriteLine(pathWithoutRoot); pathWithoutRoot = Path.GetFileName(path); Console.WriteLine(pathWithoutRoot); pathWithoutRoot = path.Replace(root, ""); Console.WriteLine(pathWithoutRoot); pathWithoutRoot = path.Substring(root.Length); Console.WriteLine(pathWithoutRoot); var pattern = "C:\\\\"; var regex = new Regex(pattern); pathWithoutRoot = regex.Replace(path, ""); Console.WriteLine(pathWithoutRoot); } } } 

这一切都取决于你想要用字符串做什么,在这种情况下,你可能只想删除C:\但下一次你可能想用字符串做其他类型的操作,也许删除尾部或类似的东西,那么以上不同的方法可能会帮助你。

对于这个具体的例子,我会看看路径类。 举个例子,你可以打电话给:

 string pathminus = Path.GetFileName(path); 

你看过Substring方法吗?

如果字符串实际上是一个文件路径,请使用Path.GetFileName方法获取文件名称的一部分。

path.SubString(path.IndexOf('\'))

你想要System.Text.RegularExpressions.Regex但你究竟在这里做什么?

最简单的形式是:

  [TestMethod] public void RemoveDriveFromPath() { string path = @"C:\test.txt"; Assert.AreEqual("test.txt", System.Text.RegularExpressions.Regex.Replace(path, @"^[AZ]\:\\", string.Empty)); } 

你只是想获得没有路径文件的文件名?

如果是这样做,而不是:

  [TestMethod] public void GetJustFileName() { string path = @"C:\test.txt"; var fileInfo = new FileInfo(path); Assert.AreEqual("test.txt", fileInfo.Name); } 

对于更一般的字符串,使用string.Split(inputChar) ,它将一个字符作为参数,并在找到inputChar的任何地方将字符串拆分为一个string[]

 string[] stringArr = path.Split('\\'); // need double \ because \ is an escape character // you can now concatenate any part of the string array to get what you want. // in this case, it's just the last piece string pathminus = stringArr[stringArr.Length-1];