生活随笔
收集整理的這篇文章主要介紹了
查找unity工程代码中中文字符
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
游戲本地化的時候可能需要搜索工程代碼中的中文字符。
這個可以通過加載文件一行一行讀取后,通過正則來查詢。
下面的代碼LoadFile函數(shù)通過流加載文件,FindFile通過遞歸病使用DirectoryInfo類和FileInfo類讀取子目錄和文件,并通過正則匹配出中文字符。
使用時需要引用
using System.Text.RegularExpressions;
using System.IO;
?
<span style="white-space:pre"> </span>public static ArrayList infoall;public static List<string> FileNames = new List<string>(); [MenuItem("Localization/Check Porject Chinese File")]public static void CheckChinese(){FileNames.Clear ();string dir = Application.dataPath + "/Scripts";FindFile(dir);Debug.Log ("包含中文的文件共" + FileNames.Count + "個");for(int i = 0; i < FileNames.Count; i++){Debug.Log ("包含中文的文件" + i +" " + FileNames[i]);}}public static ArrayList LoadFile(string path,string name){//使用流的形式讀取StreamReader sr =null;try{sr = File.OpenText(path+"//"+ name);}catch(Exception e){//路徑與名稱未找到文件則直接返回空return null;}string line;ArrayList arrlist = new ArrayList();while ((line = sr.ReadLine()) != null){//一行一行的讀取//將每一行的內(nèi)容存入數(shù)組鏈表容器中arrlist.Add(line);}//關(guān)閉流sr.Close();//銷毀流sr.Dispose();//將數(shù)組鏈表容器返回return arrlist;} public static void FindFile(string dirPath) //參數(shù)dirPath為指定的目錄{//在指定目錄及子目錄下查找文件,在listBox1中列出子目錄及文件DirectoryInfo Dir=new DirectoryInfo(dirPath);foreach(DirectoryInfo d in Dir.GetDirectories())//查找子目錄{FindFile(d.FullName);}foreach(FileInfo f in Dir.GetFiles("*.cs")) //查找文件{bool haveChinese = false;infoall = LoadFile(Dir.ToString(),f.Name);Regex rxChinaCharacter = new Regex ("[\u4e00-\u9fa5]+"); //正則匹配中文字符for(int i = 0 ;i < infoall.Count;i++){MatchCollection matches = rxChinaCharacter.Matches(infoall[i].ToString());if (matches.Count > 0){haveChinese = true;Debug.Log("文件名:"+f.FullName + " 行號:"+ i + " 內(nèi)容" + infoall[i].ToString());}}if(haveChinese)FileNames.Add(f.FullName);}}
總結(jié)
以上是生活随笔為你收集整理的查找unity工程代码中中文字符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。