C# Winforms 搜索开始和结束字符串并获取选择
C# Winforms Search Start and End string and get selection
我使用 C# Winforms RichTextBox 来加载和显示一些日志文件。
这些日志文件使用 ANSI 转义字符为日志文件着色。
找到了一些示例来查找和突出显示搜索字符串,但我想搜索开始和结束字符串,获取这些选择并为两者之间的内容着色。
示例:previous text ESC[36m SOME LOG CONTENT ESC[0m Some more text
所以我可以加载和搜索字符串,但我没有成功创建一个函数来搜索 ESC[36m
作为第一个字符串,ESC[0m
作为第二个字符串,然后 [=27] =] 它的 TextRange
所以我可以在之后突出显示它。
更新
澄清一下,我不仅需要 string-search-1 和 string-search-2 之间的文本,我还需要一个 TextRange
选择文本以便我可以修改格式。
您可以这样做以找到介于两者之间的文本:
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);
尝试使用正则表达式。这应该可以做到。
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;
}
我使用 C# Winforms RichTextBox 来加载和显示一些日志文件。 这些日志文件使用 ANSI 转义字符为日志文件着色。
找到了一些示例来查找和突出显示搜索字符串,但我想搜索开始和结束字符串,获取这些选择并为两者之间的内容着色。
示例:previous text ESC[36m SOME LOG CONTENT ESC[0m Some more text
所以我可以加载和搜索字符串,但我没有成功创建一个函数来搜索 ESC[36m
作为第一个字符串,ESC[0m
作为第二个字符串,然后 [=27] =] 它的 TextRange
所以我可以在之后突出显示它。
更新
澄清一下,我不仅需要 string-search-1 和 string-search-2 之间的文本,我还需要一个 TextRange
选择文本以便我可以修改格式。
您可以这样做以找到介于两者之间的文本:
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);
尝试使用正则表达式。这应该可以做到。
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;
}