gpt4 book ai didi

java - URL 自动检测并在文本 block 中突出显示

转载 作者:行者123 更新时间:2023-12-01 15:40:57 31 4
gpt4 key购买 nike

例如,用户可以输入文本

This is some text, visit www.mysite.com. Thanks & bye.

应该找到 URL 并将其转换为链接,以便在网站中显示。所有其他字符应按原样显示。

我已经搜索和谷歌搜索了一段时间了。我确信这种事情肯定已经存在了。我很想自己编程,但我确信这比看起来更复杂。

我确信,当我尝试自己编程时,我还会遇到其他问题。我不认为简单的正则表达式是前进的方向。

是否有任何库已经做到了这一点,特别适合 Java? (如果它是另一种技术,也许我可以看一下并将其转换为 Java)

最佳答案

虽然你说这是一个常见问题,但它也是一个在任何地方都没有真正得到令人满意解决的问题,也不可能得到解决。像这样以自由文本编写的没有标记的 URI 可能会不明确(例如,请参阅 http://en.wikisource.org/wiki/1911_Encyclop%C3%A6dia_Britannica/Aga_Khan_I.,您如何知道“.”不是“句子结束”句号,而实际上是 URI 的一部分?)。您可以看看the problem with urls有关问题的介绍以及评论中内容丰富的讨论。归根结底,您可以尽最大努力,例如匹配协议(protocol)、寻找有效的顶级域(其中包括a lot more,比您一开始想象的要大),但总有东西会漏网。

为了尝试向您提供一些伪代码,我会说以下内容是我首先要说的:

process() {
List<String> looksLikeUri = getMatches(1orMoreValidUriCharacters + "\\." + 1orMoreValidUriCharacters);
removeUrisWithInvalidTopLevelDomains(looksLikeUri);
trimCharactersUnlikelyToBeInUris(looksLikeUri);
guessProtocolIfNotPresent(looksLikeUri);
}

removeUrisWithInvalidTopLevelDomains() // Use a list of valid ones or limit it to something like 1-6 characters.

trimCharactersUnlikelyToBeInUris() // ,.:;? (at the very end) '(' at start ')' at end unless a starting one was in URI.

guessProtocolIfNotPresent() // Usually http unless string starts with something obvious like "ftp" or already has a protocol.

关于java - URL 自动检测并在文本 block 中突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035501/

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