这是一个很好用的golang代码文件,可以帮助将ICU这种多语言的替代符号,直接转换成中文原版的文字。前提是已经从语言res文件中将中文预先提取出来。
这是替换后的样子,简洁明了,修改也非常容易。
注意:因为golang默认是uft8的,需要将文件另存为utf8编码,替换后的文件,还需要手动转存为gb2312编码才能正确使用。
下面是实现这个功能的golang代码文件:
package main import ( "fmt" "io" "os" "strings" ) func main() { spath := "E:/HDW2/hdw21-4/Tools/hdwgo/luaicu/files/NpcScript05.lua" spath2 := "E:/HDW2/hdw21-4/Tools/hdwgo/luaicu/files/new/NpcScript05.lua" file, err := os.Open(spath) if err != nil { fmt.Println("无法打开文件:", err) return } defer file.Close() filedata, err := io.ReadAll(file) if err != nil { fmt.Println("file error") return } filestr := string(filedata) strlt := strings.Split(filestr, " ") strlen := len(strlt) lualt := make([]string, 0) for i := 0; i < strlen; i++ { linestr := strlt[i] linestr2 := strings.TrimSpace(linestr) linestr2 = strings.ReplaceAll(linestr2, " ", "") linestr2 = strings.ReplaceAll(linestr2, " ", "") if (strings.HasPrefix(linestr2, "--MISSCRIPT_") || strings.HasPrefix(linestr2, "MISSCRIPT_") || strings.HasPrefix(linestr2, "BIRTH_BIRTH") || strings.HasPrefix(linestr2, "CALCULATE_") || strings.HasPrefix(linestr2, "HELP_MONSTERHELP")) && strings.Contains(linestr2, "_LUA_") && strings.Contains(linestr2, "=") { lualt = append(lualt, linestr) } } xinlt := make(map[string]string, 0) lualen := len(lualt) for i := 0; i < lualen; i++ { luastr := lualt[i] luastr2 := strings.TrimSpace(luastr) lt2 := strings.Split(luastr2, "=") keystr := strings.TrimSpace(lt2[0]) valstr := strings.TrimSpace(lt2[1]) if strings.HasPrefix(keystr, "--") { keystr = strings.Replace(keystr, "--", "", 1) keystr = strings.TrimSpace(keystr) } xinlt[keystr] = valstr rtstr := luastr + " " filestr = strings.Replace(filestr, rtstr, "", -1) } for k, v := range xinlt { filestr = strings.Replace(filestr, k, v, -1) } fileName := spath2 dstFile, err := os.Create(fileName) if err != nil { fmt.Println(err.Error()) return } defer dstFile.Close() dstFile.WriteString(filestr) fmt.Println("run ok") }