C# 如何找到文本框中单词所在的行?

C# 如何找到文本框中单词所在的行?,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我目前正在开发一个具有查找选项的记事本。当你输入一个单词时,它会找到并高亮显示。我让它工作,但我已经达到了一个墙,我似乎无法通过我目前使用的方法来做这件事。我目前正在用“”拆分文本框中的所有单词,并将单词的长度相加,直到找到输入的搜索词,这样我就可以看到找到的单词的确切位置,以便突出显示它 但现在的问题是,由于我使用split(“”)获取文本框中的每个单词,每当用户添加新行时,split的返回数组将是“wordOnFirstLine\r\nwordOnSecondLine”。因此,它们将被视为一

我目前正在开发一个具有查找选项的记事本。当你输入一个单词时,它会找到并高亮显示。我让它工作,但我已经达到了一个墙,我似乎无法通过我目前使用的方法来做这件事。我目前正在用“”拆分文本框中的所有单词,并将单词的长度相加,直到找到输入的搜索词,这样我就可以看到找到的单词的确切位置,以便突出显示它

但现在的问题是,由于我使用split(“”)获取文本框中的每个单词,每当用户添加新行时,split的返回数组将是“wordOnFirstLine\r\nwordOnSecondLine”。因此,它们将被视为一个词。
还有什么方法可以让我在文本框中找到一个单词,并查看它的确切位置,以便突出显示它

不应使用“”拆分所有单词。您可以按句子('\n')拆分文本,然后对每个句子使用IndexOf查找单词的出现处。

我相信您正在寻找
GetLineFromCharIndex(int)
方法。输入单词中第一个字符的索引应返回其行号。

尝试将字符串拆分为

string splitstring = stringToSplit.Split(new char[] { ' ', '\n', '\r' });

它将在所有“\n”和“\r”字符之间为您提供一个空字符串,但该修复程序可能最接近您当前正在执行的操作。

请勿拆分任何内容。创建一个可能很大的字符串数组是对资源的浪费

只需IndexOf(使用适当的大小写比较器)就可以为您提供整个文本框中第一个单词的位置

因此,假设您正在搜索单词“answer”,该单词由您编写的记事本文本前后的空格分隔

int pos = 0;
string searchText = " answer ";
pos = myNotePad.Text.IndexOf(searchText, pos, StringComparison.CurrentCulture.IgnoreCase);
现在选择字符串

if(pos > 0)
{
    myNotePad.Text.SelectionStart = pos + 1;
    myNotePad.Text.SelectionLength = searchText.Length - 2;
}

如果保存变量pos的值,还可以轻松实现查找下一个功能

YES!最后你不知道在我最终决定问之前,我已经为此伤了头多久了!这就解决了,谢谢!