只在c#文件字符串中包含以后的子目录

本文关键字:子目录 包含 文件 字符串 只在 | 更新日期: 2023-09-27 18:14:31

我试图在XNA中编写一个漂亮的内容加载器,以避免必须单独加载每个资产。但是,我在描述目录位置时遇到了麻烦,因为文件操作的默认目录是exe的位置,而不是XNA的内容。Load使用Content文件夹的默认目录。

foreach (string subD in Directory.GetDirectories("..''..''..''..''Happy WorkerContent''gfx''", "*.*", SearchOption.AllDirectories))
{
    foreach (string s in Directory.GetFiles(subD))
    {
        string file = Path.GetFileNameWithoutExtension(s);
        if (Enum.IsDefined(typeof(Tex), file))
        {
            Console.WriteLine(subD);
            Console.WriteLine(file);
            GXDict.Add(Path.GetFileNameWithoutExtension(s), GV.C_Game1.Content.Load<Texture2D>(subD + "''" + file));
        }
    }
}

我的错误是因为子d是,例如,"........"'Happy WorkerContent'gfx'level entities'terrains",但是Content。Load期望"gfx'level entities'terrains".

我可以做subD.Substring(32)之类的事情,但这看起来很混乱,特别是如果我重命名任何文件夹或任何东西(并且可能无法在发布版本中工作?)。是否有一个好方法说"我只想要文件的一部分是"快乐的工作内容"目录之后?

只在c#文件字符串中包含以后的子目录

您可以编写一个方法来返回特定目标字符串后面的文本。

如果你需要搜索一个不同的字符串,你只需要传递一个不同的目标字符串给方法。

例如:

// Returns the contents of text following the target string,
// or "" if the target string wasn't found.
public static string ContentAfter(string text, string target)
{
    int index = text.IndexOf(target);
    if (index >= 0)
        return text.Substring(index + target.Length);
    else
        return "";
}

那么你可以这样称呼它:

string test = "..''..''..''..''Happy WorkerContent''gfx''whatever";
string target = "''Happy WorkerContent''";
string following = ContentAfter(test, target);

如果你有两个字符串匹配文本中的目标字符串,那就不太好了。该方法将返回第一个匹配之后的所有文本,其中当然包括第二个目标字符串。