当前位置: 首页>>代码示例>>C#>>正文


C# Subtitle.GetIndex方法代码示例

本文整理汇总了C#中Nikse.SubtitleEdit.Core.Subtitle.GetIndex方法的典型用法代码示例。如果您正苦于以下问题:C# Subtitle.GetIndex方法的具体用法?C# Subtitle.GetIndex怎么用?C# Subtitle.GetIndex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Nikse.SubtitleEdit.Core.Subtitle的用法示例。


在下文中一共展示了Subtitle.GetIndex方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GeneratePreview

        public void GeneratePreview(Subtitle subtitle, List<ReplaceExpression> replaceRules)
        {
            var fixedSubtitle = new Subtitle(subtitle);           
            _previewItems = new List<PreviewItem>();
            FixCount = 0;
            var replaceExpressions = new HashSet<ReplaceExpression>();
            foreach (var item in replaceRules)
            {
                if (item.Checked)
                {
                    string findWhat = item.FindWhat;
                    if (!string.IsNullOrEmpty(findWhat)) // allow space(s)
                    {
                        replaceExpressions.Add(item);
                        if (item.SearchType == SearchTypeRegularExpression && !_compiledRegExList.ContainsKey(findWhat))
                        {
                            _compiledRegExList.Add(findWhat, new Regex(findWhat, RegexOptions.Compiled | RegexOptions.Multiline));
                        }
                    }
                }
            }

            foreach (Paragraph p in subtitle.Paragraphs)
            {
                bool hit = false;
                string newText = p.Text;
                foreach (ReplaceExpression item in replaceExpressions)
                {
                    if (item.SearchType == SearchTypeCaseSensitive)
                    {
                        if (newText.Contains(item.FindWhat))
                        {
                            hit = true;
                            newText = newText.Replace(item.FindWhat, item.ReplaceWith);
                        }
                    }
                    else if (item.SearchType == SearchTypeRegularExpression)
                    {
                        Regex r = _compiledRegExList[item.FindWhat];
                        if (r.IsMatch(newText))
                        {
                            hit = true;
                            newText = r.Replace(newText, item.ReplaceWith);
                        }
                    }
                    else
                    {
                        int index = newText.IndexOf(item.FindWhat, StringComparison.OrdinalIgnoreCase);
                        if (index >= 0)
                        {
                            hit = true;
                            do
                            {
                                newText = newText.Remove(index, item.FindWhat.Length).Insert(index, item.ReplaceWith);
                                index = newText.IndexOf(item.FindWhat, index + item.ReplaceWith.Length, StringComparison.OrdinalIgnoreCase);
                            }
                            while (index >= 0);
                        }
                    }
                }
                if (hit && newText != p.Text)
                {
                    FixCount++;
                    _previewItems.Add(new PreviewItem(p.ID, true, p.Number.ToString(), p.Text, newText));
                    int index = subtitle.GetIndex(p);
                    fixedSubtitle.Paragraphs[index].Text = newText;                   
                }
            }
            _previewBox.Title = string.Format(Configuration.Settings.Language.MultipleReplace.LinesFoundX, FixCount);
            ShowPreview(_previewItems);
        }
开发者ID:SubtitleEdit,项目名称:subtitleedit-mac,代码行数:71,代码来源:MultipleReplace.cs


注:本文中的Nikse.SubtitleEdit.Core.Subtitle.GetIndex方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。