我想在桌面应用程序中实现java搜索并在 html 文件中突出显示多个短语,就像在网络浏览器中一样,所以 html标签(在<
和>
内被忽略,但某些标记(如<b>
)不会被忽略。当搜索示例each table
时,文本...each <b>table</b> has name...
将突出显示,但在文本...has each</p><p> Table is...
中,它将不会突出显示,因为<p>
标记会中断文本含义。
在Web浏览器中,这是以某种方式实现的,我该如何实现此实现?或网上有一些来源?我试过谷歌,但没有成功:(
答案 0 :(得分:2)
浏览器不是在实际的HTML文件中搜索,而是搜索该HTML的渲染输出。
获取合适的HTML渲染器并将其输出作为文本。然后使用适当的字符串搜索算法搜索该文本输出。
您在问题中突出显示的示例将在呈现的HTML输出中生成换行符,因此正常的字符串搜索算法将按预期运行。
答案 1 :(得分:1)
正如费萨尔所说,浏览器只搜索渲染内容。为此,您需要在进行实际搜索之前删除HTML标记:
此代码可能对您有所帮助: http://www.dotnetperls.com/remove-html-tags
当然,您需要添加一些检查/排除项,例如脚本标记和其他未呈现到浏览器中的内容。
答案 2 :(得分:0)
这看起来很简单。
1)搜索字符串中的最后一个单词。
2)看看最后一个字之前的内容。
3)确定最后一个单词之前的内容是否构成和中断(<p>, <br />, <div>
)。
4)如果中断,continue
5)Else
根据搜索查询评估上一个单词。
我不知道这是浏览器执行此操作的方式,但这种方法应该有效。
答案 3 :(得分:0)
尝试在java中使用javax.swing.text.html包。