只在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)之类的事情,但这看起来很混乱,特别是如果我重命名任何文件夹或任何东西(并且可能无法在发布版本中工作?)。是否有一个好方法说"我只想要文件的一部分是"快乐的工作内容"目录之后?
您可以编写一个方法来返回特定目标字符串后面的文本。
如果你需要搜索一个不同的字符串,你只需要传递一个不同的目标字符串给方法。
例如:// 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);
如果你有两个字符串匹配文本中的目标字符串,那就不太好了。该方法将返回第一个匹配之后的所有文本,其中当然包括第二个目标字符串。