C#Winforms搜索开始和结束字符串并获得选择

时间:2016-09-09 15:22:29

标签: c# winforms richtextbox

我使用C#Winforms RichTextBox加载并显示一些日志文件。 这些日志文件使用ANSI转义字符来着色日志文件。

找到一些示例来查找和突出显示搜索字符串,但我想搜索开始和结束字符串,获取这些选择并在其间着色内容。

示例:previous text ESC[36m SOME LOG CONTENT ESC[0m Some more text

所以我可以加载并搜索字符串,但是我没有成功创建一个函数,搜索ESC[36m作为第一个字符串,ESC[0m作为第二个字符串,然后返回{ {1}}所以我可以在之后突出显示它。

更新 为了澄清,我不仅需要string-search-1和string-search-2之间的文本,我需要一个TextRange来选择文本,以便我可以修改格式。

2 个答案:

答案 0 :(得分:1)

尝试使用正则表达式。这应该做到。

rtb.Text = "previous text ESC[36m SOME LOG CONTENT ESC[0m Some more text";

Regex regex = new Regex(@"ESC\[36m(.*?)ESC\[0m", RegexOptions.Multiline);
foreach (Match m in regex.Matches(rtb.Text))
{
    rtb.Select(m.Index + 7, m.Value.Length - 13);
    rtb.SelectionColor = Color.Aqua;
}

答案 1 :(得分:0)

你可以这样做来找到两者之间的文字:

        string test = "ESC[36m SOME LOG CONTENT ESC[0m Some more text";
        int FirstIndex =  test.IndexOf("ESC[36") + 7;            
        test = test.Substring(FirstIndex,(test.Length-(FirstIndex+1)));
        int LastIndex = test.IndexOf("ESC[0");
        test = test.Substring(0, LastIndex);