C# .NET 跨硬返回搜索文本
本文关键字:搜索 文本 返回 NET | 更新日期: 2023-09-27 18:35:22
由于我无法通过搜索工作找到解决方案,我相信我可能遇到了一个独特的问题。从本质上讲,我正在为我的妻子在 c#.NET 中创建一个基因查找/创建应用程序,并使用 RichTextBox 让她能够突出显示、着色、导出等她需要的信息。我为它制作了几种自定义方法,因为我相信我们都知道,Microsoft的 RichTextBox 给人们留下了很多想象力。
无论如何,这是我的问题:我需要能够在硬回报中搜索一个术语。用户有 60 个字母间隔的字符串,他们需要搜索可能跨越硬返回障碍的项目。例如,假设我有 2 行(为简单起见,我会将它们缩短):AAATTTCCCGGGTTTCCCGGGAAA
如果用户运行 GGGTTT 搜索,即使其中有换行符/硬回车,我也需要能够提取结果。对于我的生活,我想不出一个好方法来做到这一点,并且仍然在RichTextBox中选择结果。我总能找到结果,但获得 RichTextBox 的正确索引是我无法找到的。
如果需要,我不反对richTextBox.SaveFile()和LoadFile()并手动将rtf文本解析为字符串。它不必很漂亮,在这种情况下,它只需要工作。
感谢您提供的任何帮助/指导。
这是一个相关的片段:
//textbox 2 search area (examination area)
private void button5_Click(object sender, EventArgs e)
{
textBox3.Text = textBox3.Text.ToUpper();
if (textBox3.Text.Length > 0)
{
List<string> lines = richTextBox2.Lines.ToList();
string allText = "";
foreach (string line in lines)
allText = allText + line.Replace("'r", "").Replace("'n", "");
if (findMultiLineRTB2(allText, textBox3.Text) != -1)
{
richTextBox2.Select(lastMatchForRTB2, textBox3.Text.Length);
richTextBox2.SelectionColor = System.Drawing.Color.White;
richTextBox2.SelectionBackColor = System.Drawing.Color.Blue;
}//end if
else
MessageBox.Show("Reached the end of the sequence", "Finished Searching");
}//end if
}//end method
private int findMultiLineRTB2(string rtbText, string searchString)
{
lastMatchForRTB2 = rtbText.IndexOf(searchString, lastMatchForRTB2 + 1);
return lastMatchForRTB2;
}
所以我做了一个假设:你想在所有行中搜索一个单词,每行长度为 60 个字符。所需的结果是该单词的索引。
你只需要构建一个没有换行符的字符串,例如使用 string.Join
:
string allText = string.Join("", richTextBox.Lines);
int indexOf = allText.IndexOf("GGGTTT"); // 9 in your sample