C#.NET在硬回车中搜索文本

时间:2013-10-15 15:23:08

标签: c# .net search richtextbox carriage-return

由于我无法通过我的搜索努力找到解决方案,我相信我可能有一个独特的问题。基本上我正在为我的妻子在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;
    }

1 个答案:

答案 0 :(得分:1)

所以我做了一个假设:你想在所有行中搜索一个单词,每行的长度为60个字符。期望的结果是该单词的索引。

您只需要构建一个没有换行符的字符串,例如string.Join

string allText = string.Join("", richTextBox.Lines);
int indexOf = allText.IndexOf("GGGTTT");  // 9 in your sample