删除名称前的字符串中的所有字符

时间:2013-04-22 08:46:33

标签: c# string char

如果匹配某个名称,我怎样才能删除字符串中的所有字符?例如,我有以下字符串:

"C:\\Installer\\Installer\\bin\\Debug\\App_Data\\Mono\\etc\\mono\\2.0\\machine.config"

如何删除字符串“App_Data”之前的所有字符?

2 个答案:

答案 0 :(得分:6)

var str = @"C:\Installer\Installer\bin\Debug\App_Data\Mono\etc\mono\2.0\machine.config";

var result = str.Substring(str.IndexOf("App_Data"));

Console.WriteLine(result);

打印:

App_Data\Mono\etc\mono\2.0\machine.config

嗯,这样做的一种奇特方式是尝试使用平台无关的类Path,它旨在处理文件和目录路径操作。在您的简单情况下,第一个解决方案在许多因素中更好,并且仅考虑下一个解决方案:

var result = str.Split(Path.DirectorySeparatorChar)
                .SkipWhile(directory => directory != "App_Data")
                .Aggregate((path, directory) => Path.Combine(path, directory));

Console.WriteLine(result); // will print the same

答案 1 :(得分:0)

或以扩展方式实现:

public static class Extension
{
    public static string TrimBefore(this string me, string expression)
    {
        int index = me.IndexOf(expression);
        if (index < 0)
            return null;
        else
            return me.Substring(index);
    }
}

并使用它:

string trimmed = "i want to talk about programming".TrimBefore("talk");