Exemple #1
0
            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());
            }
Exemple #2
0
        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());
        }