在 richtextbox 中查找并显示来自特定文本的多行
Find and show multiple Line from specific text in richtextbox
基于这个帖子How to get the line of specific text in richtextbox我想问另一个关于 richtextbox 中特定文本行的问题。
从那个线程,他想显示哪一行 'orange' 文本?
但是,我想知道他是否还有另一个 'orange' 比如
从 table 开始,我想显示 'Orange' 文本的行号
我预计输出将是 "Line 1,2,3,4"
非常感谢。
您必须使用循环并跟踪最后找到字符串的索引。像这样的方法应该有效:
private void button1_Click(object sender, EventArgs e)
{
string orange = "orange";
var index = 0;
do
{
index = richTextBox1.Find(orange, index, RichTextBoxFinds.None);
if (index >= 0)
{
textBox1.Text += richTextBox1.GetLineFromCharIndex(index).ToString() + " ";
index++;
}
} while (index >= 0);
}
这将在不同的行中找到字符串 "orange" 的多个实例。
您可以使用像这样的小正则表达式来完成:
private void button1_Click(object sender, EventArgs e)
{
int i = 1;
string result = "Line ";
foreach (Match match in Regex.Matches(richTextBox1.Text, "[A-Za-z0-9 ]+"))
{
if (match.Value.Contains("Orange"))
result = $"{result} {i},";
i++;
}
textBox1.Text = result;
}
如果您好奇的话,这里有一些文档:
基于这个帖子How to get the line of specific text in richtextbox我想问另一个关于 richtextbox 中特定文本行的问题。
从那个线程,他想显示哪一行 'orange' 文本? 但是,我想知道他是否还有另一个 'orange' 比如
从 table 开始,我想显示 'Orange' 文本的行号 我预计输出将是 "Line 1,2,3,4"
非常感谢。
您必须使用循环并跟踪最后找到字符串的索引。像这样的方法应该有效:
private void button1_Click(object sender, EventArgs e)
{
string orange = "orange";
var index = 0;
do
{
index = richTextBox1.Find(orange, index, RichTextBoxFinds.None);
if (index >= 0)
{
textBox1.Text += richTextBox1.GetLineFromCharIndex(index).ToString() + " ";
index++;
}
} while (index >= 0);
}
这将在不同的行中找到字符串 "orange" 的多个实例。
您可以使用像这样的小正则表达式来完成:
private void button1_Click(object sender, EventArgs e)
{
int i = 1;
string result = "Line ";
foreach (Match match in Regex.Matches(richTextBox1.Text, "[A-Za-z0-9 ]+"))
{
if (match.Value.Contains("Orange"))
result = $"{result} {i},";
i++;
}
textBox1.Text = result;
}
如果您好奇的话,这里有一些文档: