如何从UWP的RichEditBox中提取所有链接的范围及内容
提取RichEditBox中链接的范围与内容
要提取你设置的10个链接的位置范围和对应内容,可以通过ITextRange结合格式查找的方式实现,具体步骤如下:
实现思路
借助TextDocument的范围查找功能,指定只检索带有链接格式的文本段,逐个获取每个链接的起始/结束位置和对应的链接地址。
代码示例
// 存储链接信息的列表,包含起始位置、结束位置、链接地址 var linkInfoList = new List<(int StartPos, int EndPos, string LinkUrl)>(); // 获取整个文本的范围 var fullRange = richEditBox.TextDocument.GetRange(0, richEditBox.TextDocument.Length); while (fullRange.FindText("", TextRangeOptions.FormatLink, out var linkRange)) { // 去除设置链接时添加的双引号 var linkUrl = linkRange.Link?.Trim('"') ?? string.Empty; // 记录链接的位置和地址 linkInfoList.Add((linkRange.StartPosition, linkRange.EndPosition, linkUrl)); // 移动范围起始位置,避免重复查找同一链接 fullRange.StartPosition = linkRange.EndPosition; } // 遍历输出所有链接信息(示例) foreach (var linkInfo in linkInfoList) { Console.WriteLine($"链接位置:{linkInfo.StartPos}-{linkInfo.EndPos},地址:{linkInfo.LinkUrl}"); }
关键说明
FindText方法传入TextRangeOptions.FormatLink参数,会自动定位到带有链接格式的文本段- 因为你设置链接时给地址加了双引号,所以读取后需要用
Trim('"')去除多余引号 - 每次查找完成后更新范围起始位置,确保遍历所有链接而不重复
内容的提问来源于stack exchange,提问作者pavan kumar
相关产品推荐
相关产品推荐

