我有一条路径,该路径并不总是相同,用户可以输入例如/ main / jumanji / hacks,但随后输入/ main / users / pirate / cool / beans
由此,我想检查该路径是否存在于伪环境中,例如/ main / jumanji / hacks是否类似于folder.contains(main)?文件夹[main]。包含? jumanji,文件夹[main] [jumanji]。包含吗?骇客 返回文件夹[主] [jumanji] [hacks]。文件 要么 返回文件夹[main] [jumanji] [hacks]。文件夹
问题是我不知道用户要写什么,并且潜在地,我有列表列表的列表,这些列表可能永远存在。如何检查路径是否存在并从中获取数据?
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;
}
答案 0 :(得分:2)
我对您的代码进行了一些修改:
[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;
}
答案 1 :(得分:0)
给定的代码过于复杂。
您要使用哪个文件夹?我猜这是string []文件夹,所以将List重命名为其他名称。 文件夹之一是文件夹[main] [users] .... [cool] .folder,但是由于已经是文件夹,因此无法使用。
能否请您重写给定的代码并更清楚地说明您想要什么?这些路径是什么?这是系统路径,游戏路径,...