gpt4 book ai didi

c# - 不断修改文本的有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:33:53 25 4
gpt4 key购买 nike

好的,我正在创建一个基本上必须与 C# .net 中的 RichTextBox 交互的类。它的主要功能之一是检测用户是否键入了特殊单词,如果找到匹配项,它必须更改单词的颜色(就像在文字处理器中一样)。

问题是我不确定如何以有效的方式去做,因为每次修改 RTB (RichTextBox) 中的文本时我都在考虑进行搜索,但是搜索每次用户键入一个新词时整个 RTB(考虑到 RTB 中的文本很长)。

我找到了一种方法来获取 RTB 中输入的最后一个字符并确定是否形成了一个单词,然后检查它是否是一个特殊单词,但问题是如果 RTB 的文本被函数修改或粘贴文本那就不行了。因此,我必须考虑到可以通过多种方式修改 RTB 的文本。

那么,每次更改文本时都在 RTB 中进行全面搜索以查找特殊词是否有效? (考虑到上面的文字可能很长)或者你们有没有想到其他方法?

编辑:----------------------------

万一有人感兴趣,我找到了解决问题的方法。

我在我的类中使用一个整数来跟踪当前选择位置(RTB 中光标的当前或最后已知位置),方法是每次在 RTB 中使用事件 RichTextBox_SelectionChanged 更改选择时更新它。像这样:

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
LastCursorPosition = CurrentCursorPosition;
CurrentCursorPosition = richTextBox1.SelectionStart;
CursorsDifferences = CurrentCursorPosition - LastCursorPosition;

}

这将确保 CurrentCursorPosition 会在每次用户键入字符或修改 RTB 中的文本时更新,并且 LastCursorPosition 会保持不变,我必须说吗?然后光标位置的差异将保存在 CursorsDifferences 上,如果用户将某些内容粘贴到 RTB CursorsDifferences 会告诉您插入的字符串的长度。基于此,您可以从LastCursorPosition 到 CurrentCursorPosition。

注意:从 LastCursorPosition 搜索到 CurrentCursorPosition 可能不准确,因为 LastCursorPosition 可能不是单词的开头,因此您必须找到前面的 ' '(whitesapce)或 '\n'(换行符)并获取字符在 a 前面的位置' ' 或 '\n' 并根据位置进行搜索,同样适用于 CurrentCursorPosition。

最佳答案

万一有人感兴趣,我找到了解决问题的方法。

我在我的类中使用一个整数来跟踪当前选择位置(RTB 中光标的当前或最后已知位置),方法是每次在 RTB 中使用事件 RichTextBox_SelectionChanged 更改选择时更新它。像这样:

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
LastCursorPosition = CurrentCursorPosition;
CurrentCursorPosition = richTextBox1.SelectionStart;
CursorsDifferences = CurrentCursorPosition - LastCursorPosition;

}

这将确保 CurrentCursorPosition 会在每次用户键入字符或修改 RTB 中的文本时更新,并且 LastCursorPosition 会保持不变,我必须说吗?然后光标位置的差异将保存在 CursorsDifferences 上,如果用户将某些内容粘贴到 RTB CursorsDifferences 会告诉您插入的字符串的长度。基于此,您可以执行从 LastCursorPosition 到 CurrentCursorPosition 的搜索。

注意:从 LastCursorPosition 搜索到 CurrentCursorPosition 可能不准确,因为 LastCursorPosition 可能不是单词的开头,因此您必须找到前面的 ' '(whitesapce)或 '\n'(换行符)并获取' ' 或 '\n' 前面的字符并根据位置进行搜索,同样适用于 CurrentCursorPosition。

关于c# - 不断修改文本的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com