今天心血來潮用Go語言做了個小工具,選擇Go主要是因為它可以跨系統(tǒng)生成可執(zhí)行文件。
大概做過Android開發(fā)的人應該都知道,資源名字是不能含有中文的,否則會構建失敗。
如果是個大型手游項目,那么Resources目錄中可能會有上百兆的文件。如果有些文件名是以中文亂碼命名的,那么一個一個去翻找是非常耗時的。
不知大家是否也深有這樣的感受? 希望寫的這個小工具可以幫助到大家。
那么廢話不多說,代碼分享給大家,僅供參考。
package main
import (
"errors"
"flag"
"fmt"
"os"
"path/filepath"
"regexp"
"strings"
)
func main() {
dir := flag.String("d", "", "This is the directory to be checked.")
flag.Parse()
err := findFile(*dir)
if err != nil {
os.Exit(1)
}
}
func findFile(dir string) error {
return filepath.Walk(dir, func(path string, f os.FileInfo, err error) error {
if f.IsDir() || strings.Contains(path, ".svn") {
return nil
}
checkErr := checkUnicode(f.Name())
if checkErr != nil {
fmt.Println(checkErr.Error())
}
return nil
})
}
func checkUnicode(fileName string) error {
hzRegexp := regexp.MustCompile("^[\u4e00-\u9fa5]$")
for _, s := range fileName {
result := hzRegexp.MatchString(string(s))
if result == true {
return errors.New("This file contains Chinese unicode")
}
}
if strings.Contains(fileName, " ") {
return errors.New("This file contains Space unicode")
}
return nil
}
使用方法
- macos
./checkUnicode -d 需要檢測的目錄路徑 - windows
./checkUnicode.exe -d 需要檢測的目錄路徑