C# 正在搜索无限列表列表列表列表列表。。。(这可能会一直持续)使用定义要查找多少列表的字符串

C# 正在搜索无限列表列表列表列表列表。。。(这可能会一直持续)使用定义要查找多少列表的字符串,c#,unity3d,C#,Unity3d,我有一个路径,这个路径并不总是相同的,用户可以输入例如/main/jumanji/hacks,然后输入/main/users/pirate/cool/beans 从这里我想检查这个路径是否存在于假环境中,例如/main/jumanji/hacks将类似于folders.contains(main)?文件夹[main]。包含哪些内容?jumanji,文件夹[main][jumanji]。包含什么?黑客, 返回文件夹[main][jumanji][hacks].文件 或 返回文件夹[main][ju

我有一个路径,这个路径并不总是相同的,用户可以输入例如/main/jumanji/hacks,然后输入/main/users/pirate/cool/beans

从这里我想检查这个路径是否存在于假环境中,例如/main/jumanji/hacks将类似于folders.contains(main)?文件夹[main]。包含哪些内容?jumanji,文件夹[main][jumanji]。包含什么?黑客, 返回文件夹[main][jumanji][hacks].文件 或 返回文件夹[main][jumanji][hacks].folders

问题是,我不知道用户将要写什么,而且,我可能有一系列的列表,这些列表可能会永远持续下去。如何检查路径是否存在并从中获取数据

public class Example : MonoBehaviour
{
    private string path = "/main/users/pirate/cool";

    public bool Exists()
    {
        string[] folders = path.Split('\\');

        //List<Folder> folders // assume it's already populated

        // for(folders) contain /"main"/ 
            // for(folders main) contains? users
                // for folders(main, users) contains? pirate
                    // for folders(main, users, pirate) contains? cool

                        // return folders[main][users][pirate][cool].Files
                        // or
                        // return folders[main][users][pirate][cool].Folder

        return false;
    }
}

[System.Serializable]
public class Folder
{
    public string Path;
    public List<string> Folders;
    public List<File> Files;
}

[System.Serializable]
public class File
{
    public string Name;
    public string Text;
    public string Extension;
}
公共类示例:MonoBehavior
{
私有字符串路径=“/main/users/pirate/cool”;
公共布尔存在()
{
string[]folders=path.Split('\\');
//列出文件夹//假定已填充
//对于(文件夹)包含/“main”/
//for(主文件夹)包含?个用户
//对于文件夹(主文件夹、用户文件夹),包含?盗版
//文件夹(主文件夹、用户文件夹、盗版文件夹)包含?酷
//返回文件夹[main][users][pirate][cool]。文件
//或
//返回文件夹[main][users][pirate][cool]。文件夹
返回false;
}
}
[系统可序列化]
公共类文件夹
{
公共字符串路径;
公用文件夹列表;
公开文件清单;
}
[系统可序列化]
公共类文件
{
公共字符串名称;
公共字符串文本;
公共字符串扩展;
}

给定的代码太复杂了

您在哪些文件夹上为您的进行备份?我猜是字符串[]文件夹,所以将列表重命名为其他内容。 其中一个返回文件夹[main][users]..[cool].文件夹,但由于它已经是该文件夹,因此无法工作


你能重写给定的代码并更清楚地说明你想要什么吗?这些路径是什么?这是系统路径,游戏路径,

给定的代码太复杂了

您在哪些文件夹上为您的进行备份?我猜是字符串[]文件夹,所以将列表重命名为其他内容。 其中一个返回文件夹[main][users]..[cool].文件夹,但由于它已经是该文件夹,因此无法工作


你能重写给定的代码并更清楚地说明你想要什么吗?这些路径是什么?这是系统路径、游戏路径等吗?

我假设对您的代码进行了几次修改:

[System.Serializable]
public class Folder
{
    // Supposing you have the name of the folder instead of its path
    // Otherwise, you just have to check if the paths are equals
    public string Name;
    public List<Folder> Folders; // Folder instead of string
    public List<File> Files;
}

public bool Exists( string path )
{
    string[] hierarchy = path.Split('\\');

    List<Folder> folders = GetRootFolders() ; // assume it's already populated

    for( int i = 0 ; i < hierarchy.Length ; ++i )
    {
        if( folders == null || folders.Count == 0 )
            return false ;

        Folder desiredFolder = folders.Find( f => f.Name.Equals( hierarchy[i] ));

        if( desiredFolder == null )
            return false ;

        folders = desiredFolder.Folders;
    }
    return true;
}
[System.Serializable]
公共类文件夹
{
//假设您有文件夹的名称而不是路径
//否则,只需检查路径是否相等
公共字符串名称;
公用列表文件夹;//文件夹而不是字符串
公开文件清单;
}
公共布尔存在(字符串路径)
{
string[]hierarchy=path.Split('\\');
List folders=GetRootFolders();//假设它已经被填充
for(int i=0;if.Name.Equals(层次结构[i]);
如果(desiredFolder==null)
返回false;
folders=desiredFolder.folders;
}
返回true;
}

我假设对您的代码进行了几次修改:

[System.Serializable]
public class Folder
{
    // Supposing you have the name of the folder instead of its path
    // Otherwise, you just have to check if the paths are equals
    public string Name;
    public List<Folder> Folders; // Folder instead of string
    public List<File> Files;
}

public bool Exists( string path )
{
    string[] hierarchy = path.Split('\\');

    List<Folder> folders = GetRootFolders() ; // assume it's already populated

    for( int i = 0 ; i < hierarchy.Length ; ++i )
    {
        if( folders == null || folders.Count == 0 )
            return false ;

        Folder desiredFolder = folders.Find( f => f.Name.Equals( hierarchy[i] ));

        if( desiredFolder == null )
            return false ;

        folders = desiredFolder.Folders;
    }
    return true;
}
[System.Serializable]
公共类文件夹
{
//假设您有文件夹的名称而不是路径
//否则,只需检查路径是否相等
公共字符串名称;
公用列表文件夹;//文件夹而不是字符串
公开文件清单;
}
公共布尔存在(字符串路径)
{
string[]hierarchy=path.Split('\\');
List folders=GetRootFolders();//假设它已经被填充
for(int i=0;if.Name.Equals(层次结构[i]);
如果(desiredFolder==null)
返回false;
folders=desiredFolder.folders;
}
返回true;
}