public Node GetChildByName(string name, bool isMatch = false) { //1.先对特殊名进行字符进行转换 string tmp = string.Empty; if (name == ".") //文件name不能是. / \ 这种 { //name转换成当前结点 return(disk.current); } else if (name == "..") { //name转换成上一节点 Node f = this.parent; if (f != null) { return(f); } else { return(this); } } else { //如果是中间有空格的 if (name.Contains("\"")) { name = name.Trim(new char[] { '"' }).Replace('_', ' '); } //通配符 if (isMatch && name.Contains("*") || name.Contains("?")) { var rex = CmdStrTool.WildCardToRegex(name); List <string> names = new List <string>(); foreach (Node item in childs) { names.Add(item.name); } List <string> list = names.Where(ex => Regex.IsMatch(ex, rex, RegexOptions.IgnoreCase)).ToList(); if (list.Count > 0) { name = list[0]; } } } //2.find node foreach (Node node in childs) { if (node.name == name) { return(node); } } return(null); }