/// <summary> /// 繁体转简体 /// </summary> public void TextTW2CN(string infile) { string outfile = infile + ".tmp"; if (!File.Exists(infile)) { Console.WriteLine("文件不存在:" + infile); return; } Console.WriteLine("繁体翻译变简体"); File.Delete(outfile); //以file为蓝本,根据list从check复制行出来到out using (FileStream fs = new FileStream(infile, FileMode.Open)) { using (StreamReader sr = new StreamReader(fs, Encoding.Unicode)) { using (FileStream fs2 = new FileStream(outfile, FileMode.OpenOrCreate)) { using (StreamWriter sw = new StreamWriter(fs2, Encoding.Unicode)) { string line = null; while ((line = sr.ReadLine()) != null) { line = ChineseTextHelper.ToSimplified(line); sw.WriteLine(line); } } } } } File.Delete(infile); File.Move(outfile, infile); }
/// <summary> /// 繁体转简体 /// </summary> /// <param name="outfile">输出文本</param> /// <param name="listfile">规则文本,不转简体</param> public void TW2CN(string outfile, string listfile, bool exclude = true) { if (!File.Exists(file)) { Console.WriteLine("文件不存在:" + file); return; } Console.WriteLine("规则:"); Dictionary <string, bool> rules = new Dictionary <string, bool>(); if (File.Exists(listfile)) { using (FileStream fs = new FileStream(listfile, FileMode.Open)) { using (StreamReader sr = new StreamReader(fs, Encoding.Unicode)) { string line = null; while ((line = sr.ReadLine()) != null) { string name = line.Split(' ')[0].Trim(); bool isall = name.StartsWith("@"); if (isall) { name = name.Substring(1); } if (!rules.ContainsKey(name)) { Console.WriteLine("完全匹配=" + isall + ",开头=" + name); rules.Add(name, isall); } } } } } Console.WriteLine("\n开始处理"); File.Delete(outfile); //以file为蓝本,根据list从check复制行出来到out using (FileStream fs = new FileStream(file, FileMode.Open)) { using (StreamReader sr = new StreamReader(fs, Encoding.Unicode)) { using (FileStream fs2 = new FileStream(outfile, FileMode.OpenOrCreate)) { using (StreamWriter sw = new StreamWriter(fs2, Encoding.Unicode)) { string line = null; Regex regex = new Regex("\"(\\S*?_\\S+?)\"\\s+\"([\\s\\S]+?)\""); while ((line = sr.ReadLine()) != null) { bool hasKey = false; Match m = regex.Match(line); if (m.Groups.Count > 2) { string name = m.Groups[1].Value; foreach (string key in rules.Keys) { bool all = rules[key]; if (all) { if (name.Equals(key)) { hasKey = true; if (exclude) { Console.WriteLine("忽略:" + name); } break; } } else { if (name.StartsWith(key)) { hasKey = true; if (exclude) { Console.WriteLine("忽略:" + name); } break; } } } } if (exclude) { //排除模式 if (!hasKey) { line = ChineseTextHelper.ToSimplified(line); } } else { //包含模式 if (hasKey) { line = ChineseTextHelper.ToSimplified(line); } } sw.WriteLine(line); } } } } } }