如何找到文本框中某个单词位于哪一行?

本文关键字:单词位 于哪一 何找 文本 | 更新日期: 2023-09-27 18:14:10

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

我现在的问题是,因为我使用split(' ')来获取文本框中的每个单词,每当用户添加新行时,split的返回数组将是"wordOnFirstLine'r'nwordOnSecondLine"。所以它们会被算作一个单词。还有什么方法可以让我在文本框中找到一个单词并查看它的确切位置,然后高亮显示它?

如何找到文本框中某个单词位于哪一行?

尝试将字符串分割为

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

它会在所有''n'和''r'字符之间给你一个空字符串,但这个修复可能最接近你目前所做的。

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

你不应该用' '分割所有的单词。您可以按句子(''n')分割文本,然后对每个句子使用IndexOf来查找单词的出现情况。

不要分割任何东西。创建一个可能很大的字符串数组是对资源的浪费。

简单的IndexOf(带有适当的大小写比较器)可以给你在整个文本框中第一个单词的位置

假设你在搜索单词"answerswer"作为一个单词,在你的记事本文本的前后用空格分隔你写

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的值,您还可以轻松实现查找下一个功能