private string[] TextHandler(List <string> OriText, int Chapter = 13) { var Exl = 读取并分析分类表(); var SaveText = new List <string>(); var TempText = new List <string>(); bool StartRec = false; string Name = ""; var Command = new HashSet <string>(); var Add = new List <string>(); foreach (var Oridat in OriText) { if (Oridat.StartsWith("&")) { Command.Add(Oridat); } if (StartRec) { if (Oridat == "“哈哈,那么本人就恭敬不如从命了,") { // Console.WriteLine(); } if (Oridat[Oridat.Length - 1] != '”') { Add.Add(Oridat); TempText.Add(Oridat); continue; } Add.Add(Oridat); bool FindCheck = false; var ContinueCheck = Add.FirstOrDefault(X => X.IndexOf("{{不停}}", StringComparison.Ordinal) != -1); if (ContinueCheck == null) { var BreakCheck = Add.FirstOrDefault(X => X.IndexOf("{{跳过}}", StringComparison.Ordinal) != -1); if (BreakCheck == null) { foreach (var VARIABLE in Add) { var Ret = Search(VARIABLE); if (Ret != null) { CheckTextExists(Ret); FindCheck = true; break; } } } else { FindCheck = true; } } else { foreach (var VARIABLE in Add) { var Ret = Search(VARIABLE.Replace(@"{{不停}}", "")); if (Ret != null) { CheckTextExists(Ret); FindCheck = true; break; } } } if (!FindCheck) { Console.WriteLine($"未找到文本,行数:{OriText.IndexOf(Oridat)}"); } string Search(string T) { T = T.Replace("“", "").Replace("”", ""); return(Exl[Name].FirstOrDefault(x => { String.Compute(T, x.Value); return (float)String.ComputeResult.Rate > 0.8; }).Key ?? Exl[Name] .FirstOrDefault(x => x.Value.IndexOf(T, StringComparison.Ordinal) != -1).Key); } /* string Zwei; * if (Ein.IndexOf(@"{{不停}}", StringComparison.Ordinal) != -1) * { * * Ein = Ein.Replace(@"{{不停}}", ""); * * Zwei = Exl[Name].FirstOrDefault(x => x.Value.IndexOf(Ein, StringComparison.Ordinal) != -1) * .Key; * CheckTextExists(); * } * else if (Ein.IndexOf(@"{{跳过}}", StringComparison.Ordinal) == -1) * { * Zwei = Exl[Name].FirstOrDefault(x => * { * String.Compute(Ein, x.Value); * return (float) String.ComputeResult.Rate > 0.8; * }).Key; * if (Zwei == null) * { * Zwei = Exl[Name] * .FirstOrDefault(x => x.Value.IndexOf(Ein, StringComparison.Ordinal) != -1).Key; * } * * CheckTextExists(); * }*/ void CheckTextExists(string Zwei) { if (!string.IsNullOrWhiteSpace(Zwei)) { var AddS = $"&{NameList[Name]}={Chapter}_{Zwei}.ogg"; if (!Command.Contains(AddS)) { SaveText.Add(AddS); } Exl[Name].Remove(Zwei); } else { Console.WriteLine($"未找到文本,行数:{SaveText.Count}"); } } StartRec = false; } if (Oridat.StartsWith("【")) { Name = Oridat.Replace("【", "").Replace("】", ""); if (!string.IsNullOrWhiteSpace(Name)) { if (Exl.ContainsKey(Name)) { //SaveText.AddRange(Add.ToArray()); Add.Clear(); SaveText.AddRange(TempText.ToArray()); TempText.Clear(); StartRec = true; } } } TempText.Add(Oridat); } SaveText.AddRange(TempText.ToArray()); return(SaveText.ToArray()); }
private void TextHandler(TxtFile OriText, Dictionary <string, Dictionary <string, string> > Exl) { var TempText = new List <string>(); bool StartRec = false; string Name = ""; var Command = new HashSet <string>(); var Add = new List <string>(); foreach (var Oridat in OriText.Ori) { if (Oridat.StartsWith("&")) { Command.Add(Oridat); } if (StartRec) { if (Oridat[Oridat.Length - 1] != '”') { Add.Add(Oridat); TempText.Add(Oridat); continue; } Add.Add(Oridat); var ContinueCheck = Add.FirstOrDefault(X => X.IndexOf("{{不停}}", StringComparison.Ordinal) != -1); if (ContinueCheck == null) { var BreakCheck = Add.FirstOrDefault(X => X.IndexOf("{{跳过}}", StringComparison.Ordinal) != -1); if (BreakCheck == null) { var Find = false; foreach (var VARIABLE in Add) { var Ret = Search(VARIABLE); if (Ret != null) { CheckTextExists(Ret); Find = true; break; } } if (!Find) { OriText.Log.Add($"原始文本未找到语音,行数:{OriText.Save.Count}"); } } } else { var Find = false; foreach (var VARIABLE in Add) { var Ret = Search(VARIABLE.Replace(@"{{不停}}", "")); if (Ret != null) { CheckTextExists(Ret); Find = true; break; } } if (!Find) { OriText.Log.Add($"原始文本未找到语音,行数:{OriText.Save.Count}"); } } string Search(string T) { StringCompute String = new StringCompute(); T = T.Replace("“", "").Replace("”", ""); return(Exl[Name].FirstOrDefault(x => { String.Compute(T, x.Value); return (float)String.ComputeResult.Rate > 0.8; }).Key ?? Exl[Name] .FirstOrDefault(x => x.Value.IndexOf(T, StringComparison.Ordinal) != -1).Key); } void CheckTextExists(string Zwei) { if (!string.IsNullOrWhiteSpace(Zwei)) { var AddS = $"&{Name_List[Name]}={OriText.Cap}_{Zwei}.ogg"; if (!Command.Contains(AddS)) { OriText.Save.Add(AddS); } Exl[Name].Remove(Zwei); } } StartRec = false; } if (Oridat.StartsWith("【")) { Name = Oridat.Replace("【", "").Replace("】", ""); if (!string.IsNullOrWhiteSpace(Name)) { if (Exl.ContainsKey(Name)) { Add.Clear(); OriText.Save.AddRange(TempText.ToArray()); TempText.Clear(); StartRec = true; } } } TempText.Add(Oridat); } OriText.Save.AddRange(TempText.ToArray()); }