由于我无法通过我的搜索努力找到解决方案,我相信我可能有一个独特的问题。基本上我正在为我的妻子在c#.NET中创建一个基因发现/创建应用程序,并使用RichTextBoxes为她能够突出显示,着色,导出等所需的信息。我已经为它制作了几种自定义方法,因为我相信大家都知道,微软的RichTextBox在想象中留下了很多东西。
无论如何,这是我的问题:我需要能够在硬回报中搜索一个术语。用户有60个字母间隔的字符串,他们需要搜索可能跨越该硬回程障碍的项目。例如,让我说我有2行(为简单起见我会简短): AAATTTCCCGGG TTTCCCGGGAAA
如果用户搜索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;
}
答案 0 :(得分:1)
所以我做了一个假设:你想在所有行中搜索一个单词,每行的长度为60个字符。期望的结果是该单词的索引。
您只需要构建一个没有换行符的字符串,例如string.Join
:
string allText = string.Join("", richTextBox.Lines);
int indexOf = allText.IndexOf("GGGTTT"); // 9 in your sample