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

本文关键字:字符 前面 字符串 删除 | 更新日期: 2023-09-27 18:10:28

如何删除字符串中的所有字符,直到匹配某个名称?例如,我有以下字符串:

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

我如何删除字符串' App_Data '之前的所有字符?

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

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

或者作为扩展方法实现:

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