【问题标题】:How to find the TextRange of the Nth word in a WPF RichTextBox?如何在 WPF RichTextBox 中找到第 N 个单词的 TextRange?
【发布时间】:2017-06-01 06:54:51
【问题描述】:

假设我有一个包含 1000 个单词(英文)的 RichTextBox (WPF)。有些单词会是粗体、下划线、斜体和不同的字体大小。换句话说,FlowDocument 中嵌入了许多元素标签。

在不知道单词是什么的情况下,我如何才能完全选择第 13 个单词 - 并且只选择第 13 个单词,即使它具有嵌入的元素标签(比如某些字符是粗体或下划线等)?

(我没有通过 Google 找到任何解决方案,我仍然发现 RichTextBox 是一个相当难以使​​用的控件)。

示例:“这是一个测试。” 给定:3 结果:单词“test”的TextRange。

任何建议或想法将不胜感激。

TIA

编辑。似乎需要一个循环:(。无论如何,这篇博文对回答这个问题最有帮助:Navigate Words in RichTextBox

【问题讨论】:

    标签: wpf richtextbox


    【解决方案1】:

    不太清楚嵌入元素标签是什么意思,我试了一下,我是这样做的:

    string a = new TextRange(rtb.Document.ContentStart, 
    rtb.Document.ContentEnd).Text;
    var b = a.Split(' ');
    string On13th = b[12];
    

    如果我不清楚或者您打算实现其他目标,请告诉我。

    【讨论】:

    • 通过嵌入,我的意思是流文档的文本像 ...This is a test。 “文本”属性是否会删除除文本字符串之外的所有内容?一旦找到 b[12],如何将其转换回 TextPointer?最终,我需要第 13 个单词的 TextRange,而不是单词本身。谢谢。
    • 是的,Text 属性会删除除文本字符串之外的所有内容。对于文本范围,您能否提供示例输入和输出?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多