前言

一个大型项目,配置表上千个是很正常的,这个时候想要搜索某个配置表,是有点蛋疼的事情。
自己写个配置查找器吧,效果如下:

优点:
搜索速度快;
支持拼音搜索;
支持快速打开;

缺点:
拼音只能挨个匹配,无法按词汇匹配。
比如:角色,只能匹配jiaose,而不能匹配juese
又比如:排行榜,只能匹配paixingbang,不能匹配paihangbang

配置表查找器代码


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;public class ExcelFinder : EditorWindow
{[MenuItem("Tools/excel查找")]static void ShowWin(){GetWindow<ExcelFinder>().Show();}void Awake(){m_path = Application.dataPath + "/../../../doc/配置表";m_excels.Clear();var fs = Directory.GetFiles(m_path, "*.xlsx?", SearchOption.AllDirectories);foreach (var f in fs){var path = f.Replace(m_path, "");path = path.Replace("/", "\\");var fname = Path.GetFileName(f);var fnamePinyin = ChineseToPinyin.Convert(fname);m_excels.Add(path, fnamePinyin);}m_btnStyle = new GUIStyle(EditorStyles.miniButtonLeft);m_btnStyle.fontSize = 15;m_btnStyle.normal.textColor = Color.white;m_lblStyle = new GUIStyle(EditorStyles.miniButtonLeft);m_lblStyle.fontSize = 15;m_lblStyle.normal.textColor = Color.green;m_lblStyle.alignment = TextAnchor.MiddleLeft;}void OnGUI(){GUILayout.BeginHorizontal();string before = m_keyword;string after = EditorGUILayout.TextField("", before, "SearchTextField");if (before != after) m_keyword = after;if (GUILayout.Button("", "SearchCancelButton", GUILayout.Width(18f))){m_keyword = "";GUIUtility.keyboardControl = 0;}GUILayout.EndHorizontal();m_scrollPos = GUILayout.BeginScrollView(m_scrollPos);index = 1;foreach (var excel in m_excels){if (!string.IsNullOrEmpty(m_keyword) && (!excel.Key.ToLower().Contains(m_keyword.ToLower()) && !excel.Value.ToLower().Contains(m_keyword.ToLower())))continue;GUILayout.BeginHorizontal();if (GUILayout.Button(index + ": " + excel.Key, m_lblStyle, GUILayout.Width(500))){EdtUtil.OpenFolderInExplorer(m_path.Replace("/", "\\") + excel.Key);}if (GUILayout.Button("打开目录", m_btnStyle)){var dir = m_path.Replace("/", "\\") + Path.GetDirectoryName(excel.Key);EdtUtil.OpenFolderInExplorerReveals(m_path.Replace("/", "\\") + excel.Key);}GUILayout.EndHorizontal();++index;}GUILayout.EndScrollView();}private string m_path;private Dictionary<string, string> m_excels = new Dictionary<string, string>();private Vector2 m_scrollPos;private string m_keyword;private GUIStyle m_btnStyle;private GUIStyle m_lblStyle;private int index;
}

中文汉字转拼音接口

/// <summary>
/// 汉字转拼音类
/// </summary>
public class ChineseToPinyin
{private static int[] pyValue = new int[]{-20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036,-20032,-20026,-20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763,-19756,-19751,-19746,-19741,-19739,-19728,-19725,-19715,-19540,-19531,-19525,-19515,-19500,-19484,-19479,-19467,-19289,-19288,-19281,-19275,-19270,-19263,-19261,-19249,-19243,-19242,-19238,-19235,-19227,-19224,-19218,-19212,-19038,-19023,-19018,-19006,-19003,-18996,-18977,-18961,-18952,-18783,-18774,-18773,-18763,-18756,-18741,-18735,-18731,-18722,-18710,-18697,-18696,-18526,-18518,-18501,-18490,-18478,-18463,-18448,-18447,-18446,-18239,-18237,-18231,-18220,-18211,-18201,-18184,-18183, -18181,-18012,-17997,-17988,-17970,-17964,-17961,-17950,-17947,-17931,-17928,-17922,-17759,-17752,-17733,-17730,-17721,-17703,-17701,-17697,-17692,-17683,-17676,-17496,-17487,-17482,-17468,-17454,-17433,-17427,-17417,-17202,-17185,-16983,-16970,-16942,-16915,-16733,-16708,-16706,-16689,-16664,-16657,-16647,-16474,-16470,-16465,-16459,-16452,-16448,-16433,-16429,-16427,-16423,-16419,-16412,-16407,-16403,-16401,-16393,-16220,-16216,-16212,-16205,-16202,-16187,-16180,-16171,-16169,-16158,-16155,-15959,-15958,-15944,-15933,-15920,-15915,-15903,-15889,-15878,-15707,-15701,-15681,-15667,-15661,-15659,-15652,-15640,-15631,-15625,-15454,-15448,-15436,-15435,-15419,-15416,-15408,-15394,-15385,-15377,-15375,-15369,-15363,-15362,-15183,-15180,-15165,-15158,-15153,-15150,-15149,-15144,-15143,-15141,-15140,-15139,-15128,-15121,-15119,-15117,-15110,-15109,-14941,-14937,-14933,-14930,-14929,-14928,-14926,-14922,-14921,-14914,-14908,-14902,-14894,-14889,-14882,-14873,-14871,-14857,-14678,-14674,-14670,-14668,-14663,-14654,-14645,-14630,-14594,-14429,-14407,-14399,-14384,-14379,-14368,-14355,-14353,-14345,-14170,-14159,-14151,-14149,-14145,-14140,-14137,-14135,-14125,-14123,-14122,-14112,-14109,-14099,-14097,-14094,-14092,-14090,-14087,-14083,-13917,-13914,-13910,-13907,-13906,-13905,-13896,-13894,-13878,-13870,-13859,-13847,-13831,-13658,-13611,-13601,-13406,-13404,-13400,-13398,-13395,-13391,-13387,-13383,-13367,-13359,-13356,-13343,-13340,-13329,-13326,-13318,-13147,-13138,-13120,-13107,-13096,-13095,-13091,-13076,-13068,-13063,-13060,-12888,-12875,-12871,-12860,-12858,-12852,-12849,-12838,-12831,-12829,-12812,-12802,-12607,-12597,-12594,-12585,-12556,-12359,-12346,-12320,-12300,-12120,-12099,-12089,-12074,-12067,-12058,-12039,-11867,-11861,-11847,-11831,-11798,-11781,-11604,-11589,-11536,-11358,-11340,-11339,-11324,-11303,-11097,-11077,-11067,-11055,-11052,-11045,-11041,-11038,-11024,-11020,-11019,-11018,-11014,-10838,-10832,-10815,-10800,-10790,-10780,-10764,-10587,-10544,-10533,-10519,-10331,-10329,-10328,-10322,-10315,-10309,-10307,-10296,-10281,-10274,-10270,-10262,-10260,-10256,-10254};private static string[] pyName = new string[]{"A","Ai","An","Ang","Ao","Ba","Bai","Ban","Bang","Bao","Bei","Ben","Beng","Bi","Bian","Biao","Bie","Bin","Bing","Bo","Bu","Ba","Cai","Can","Cang","Cao","Ce","Ceng","Cha","Chai","Chan","Chang","Chao","Che","Chen","Cheng","Chi","Chong","Chou","Chu","Chuai","Chuan","Chuang","Chui","Chun","Chuo","Ci","Cong","Cou","Cu","Cuan","Cui","Cun","Cuo","Da","Dai","Dan","Dang","Dao","De","Deng","Di","Dian","Diao","Die","Ding","Diu","Dong","Dou","Du","Duan","Dui","Dun","Duo","E","En","Er","Fa","Fan","Fang","Fei","Fen","Feng","Fo","Fou","Fu","Ga","Gai","Gan","Gang","Gao","Ge","Gei","Gen","Geng","Gong","Gou","Gu","Gua","Guai","Guan","Guang","Gui","Gun","Guo","Ha","Hai","Han","Hang","Hao","He","Hei","Hen","Heng","Hong","Hou","Hu","Hua","Huai","Huan","Huang","Hui","Hun","Huo","Ji","Jia","Jian","Jiang","Jiao","Jie","Jin","Jing","Jiong","Jiu","Ju","Juan","Jue","Jun","Ka","Kai","Kan","Kang","Kao","Ke","Ken","Keng","Kong","Kou","Ku","Kua","Kuai","Kuan","Kuang","Kui","Kun","Kuo","La","Lai","Lan","Lang","Lao","Le","Lei","Leng","Li","Lia","Lian","Liang","Liao","Lie","Lin","Ling","Liu","Long","Lou","Lu","Lv","Luan","Lue","Lun","Luo","Ma","Mai","Man","Mang","Mao","Me","Mei","Men","Meng","Mi","Mian","Miao","Mie","Min","Ming","Miu","Mo","Mou","Mu","Na","Nai","Nan","Nang","Nao","Ne","Nei","Nen","Neng","Ni","Nian","Niang","Niao","Nie","Nin","Ning","Niu","Nong","Nu","Nv","Nuan","Nue","Nuo","O","Ou","Pa","Pai","Pan","Pang","Pao","Pei","Pen","Peng","Pi","Pian","Piao","Pie","Pin","Ping","Po","Pu","Qi","Qia","Qian","Qiang","Qiao","Qie","Qin","Qing","Qiong","Qiu","Qu","Quan","Que","Qun","Ran","Rang","Rao","Re","Ren","Reng","Ri","Rong","Rou","Ru","Ruan","Rui","Run","Ruo","Sa","Sai","San","Sang","Sao","Se","Sen","Seng","Sha","Shai","Shan","Shang","Shao","She","Shen","Sheng","Shi","Shou","Shu","Shua","Shuai","Shuan","Shuang","Shui","Shun","Shuo","Si","Song","Sou","Su","Suan","Sui","Sun","Suo","Ta","Tai","Tan","Tang","Tao","Te","Teng","Ti","Tian","Tiao","Tie","Ting","Tong","Tou","Tu","Tuan","Tui","Tun","Tuo","Wa","Wai","Wan","Wang","Wei","Wen","Weng","Wo","Wu","Xi","Xia","Xian","Xiang","Xiao","Xie","Xin","Xing","Xiong","Xiu","Xu","Xuan","Xue","Xun","Ya","Yan","Yang","Yao","Ye","Yi","Yin","Ying","Yo","Yong","You","Yu","Yuan","Yue","Yun","Za", "Zai","Zan","Zang","Zao","Ze","Zei","Zen","Zeng","Zha","Zhai","Zhan","Zhang","Zhao","Zhe","Zhen","Zheng","Zhi","Zhong","Zhou","Zhu","Zhua","Zhuai","Zhuan","Zhuang","Zhui","Zhun","Zhuo","Zi","Zong","Zou","Zu","Zuan","Zui","Zun","Zuo"};/// <summary>/// 把汉字转换成拼音(全拼)/// </summary>/// <param name="hzString">汉字字符串</param>/// <returns>转换后的拼音(全拼)字符串</returns>public static string Convert(string hzString){// 匹配中文字符Regex regex = new Regex("^[\u4e00-\u9fa5]$");byte[] array = new byte[2];string pyString = "";int chrAsc = 0;int i1 = 0;int i2 = 0;char[] noWChar = hzString.ToCharArray();for (int j = 0; j < noWChar.Length; j++){// 中文字符if (regex.IsMatch(noWChar[j].ToString())){array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString());i1 = (short) (array[0]);i2 = (short) (array[1]);chrAsc = i1 * 256 + i2 - 65536;if (chrAsc > 0 && chrAsc < 160){pyString += noWChar[j];}else{// 修正部分文字if (chrAsc == -9254)  // 修正“圳”字pyString += "Zhen";else{for (int i = (pyValue.Length - 1); i >= 0; i--){if (pyValue[i] <= chrAsc){pyString += pyName[i];break;}}}}}// 非中文字符else{pyString += noWChar[j].ToString();}}return pyString;}
}

自制Unity文件查找器,支持拼音搜索相关推荐

  1. php搜索文件名,php实现按文件名搜索文件的远程文件查找器

    对于本地,我们可以利用windows自带的查找去进行查找,但是对于线上的话,如查找ftp空间里面文件,本程序是很有用的. 使用效果: php文件查找器源码: . 代码如下: php版文件查找(file ...

  2. elementui如何在input 框中搜索_在 Windows 10 中的文件资源管理器中删除搜索历史记录...

    Windows 资源管理器带有搜索功能,用户可以通过该功能找到特定的文件或文件夹.默认情况下,您在搜索框中进行的所有搜索都会保存到其历史记录中.下次您在搜索框中输入内容时,它将在下拉对话框中显示最近输 ...

  3. 智能重复文件查找器:Gemini mac中文

    给大家带来一款可以找到你电脑中多余的重复文件,并将它删除的智能软件双子座gemini2.gemini 2 Mac非常的智能它可以找到你电脑中那些无用的多余的重复文件并将它们删掉,即使它们位于系统的偏远 ...

  4. select2.js插件新增支持拼音搜索

    话不多说直奔主题 1.拼音搜索的原理: 将下拉框选项中的中文转换成汉语拼音,然后与输入的字母进行比较,如果包含则被检索出来. 2.效果: 3.在select2.js中找到matcher 方法,对此方法 ...

  5. php 文件查找类,PHP类搜索定位目录树的具体实现方式解析

    大家现在也许对PHP语言比较感兴趣,因为它能够帮助我们很轻松的建设一个功能强大的网站.今天我们将向大家介绍的是有关PHP类搜索定位目录树的方法.大多数时候,在嵌套的PHP结 构里进行迭代需要你写出能够 ...

  6. java编写一个文件查找器

    我们学过文件File之后就想写一个文件搜索器我写了两个版本的搜索器,第一个是基于控制台的就是我的查找结果要显示在控制台上,这个比较适合初学者学习,另外我又写了一个基于界面的文件搜索器,用起来比较好看, ...

  7. python与txt文件查找,在Python中搜索TXT文件

    readlines()会出现内存错误,因为给定了文件大小,您可能会读入内存无法合理处理的数据.因为这个文件是一个XML文件,所以您应该能够通读它,iterparse()将缓慢地解析XML,而不会占用多 ...

  8. Duplicate File Finder for Mac(重复文件查找工具)

    Duplicate File Finder for Mac 破解版就能够帮助您将这些占用您空间的重复软件和文件删除了,Duplicate File Finder Mac版具有智能"拖放&qu ...

  9. Pdf File Writer 中文应用(PDF文件编写器C#类库)

    该文由小居工作室(QQ:2482052910)    翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...

最新文章

  1. POJ 1182 食物链
  2. Boost智能指针——weak_ptr
  3. idea配置的导入导出
  4. redis 附近的人_使用redis—geo api实现搜索附近的人,自己写的一个composer包
  5. 数据清洗-python实践
  6. Windows下Maven 环境配置
  7. vue 一直登录错误_vue中路由拦截无限循环的情况
  8. ros发布者退出后重新发布, 订阅者无法收到消息的解决办法
  9. 乐鑫esp8266学习rtos3.0笔记第10篇:内置仅1M的Esp8285,如何攻破最棘手的OTA问题,大大节省资源成本开发产品;
  10. 2019《中国智慧城市建设产业全景图谱》
  11. 快慢指针解决回文问题
  12. 芒果魔兽世界单机没法运行服务器,大芒果魔兽世界单机版局域网联机方法
  13. python之turtle使用:画一颗美美哒的树
  14. linux历史数据导出命令,Linux Bash history从入门到进阶
  15. 视频摘要和视频浓缩的区别
  16. Win11 “qq无法访问个人文件夹”解决方法(原创)
  17. 石油公路工程都在用的光纤测试仪是什么型号
  18. Mac系统如何查看更新R版本
  19. jQuery遍历二维数组
  20. PyinputPlus模块在麦当劳店三明治点餐计费的应用

热门文章

  1. Padavan 路由器的入门级技巧
  2. java 判断是否信用卡_用java实现验证输入信用卡号码的正误
  3. gitlab第一次上传项目
  4. 数商云B2B跨境电子商务平台综合服务解决方案
  5. 迪士尼照片_迪士尼经典游戏,《狂热》和更多Linux游戏新闻
  6. [Go实战]怎么写测试类,运用testing.T
  7. 真实机下 ubuntu 18.04 安装anaconda+cuDNN+pytorch以及其版本选择(亲测非常实用)
  8. 某电子计算机有400个终端,(第四章)大数定率与中心极限定理习题.doc
  9. 贪心算法经典例题3:导弹发射问题
  10. python判定固定时长固定频率的音频是否连续