使用正则表达式突出显示文本中的链接(Linkify vs Patterns)
Posted
技术标签:
【中文标题】使用正则表达式突出显示文本中的链接(Linkify vs Patterns)【英文标题】:Using regular expressions to highlight links in a text (Linkify vs Patterns) 【发布时间】:2021-08-20 23:44:54 【问题描述】:为什么,用这种方法,我们只会使用最后一个模式:
Linkify.addLinks(someSpannable, Linkify.PHONE_NUMBERS)
Linkify.addLinks(someSpannable, Linkify.EMAIL_ADDRESSES)
在这种情况下,电话和电子邮件链接都将突出显示:
Linkify.addLinks(someSpannable, Patterns.PHONE, null)
Linkify.addLinks(someSpannable, Patterns.EMAIL_ADDRESS, null)
【问题讨论】:
【参考方案1】:根据文档: https://developer.android.com/reference/android/text/util/Linkify#addLinks(android.text.Spannable,%20int)
public static final boolean addLinks (Spannable text, int mask)
扫描提供的 Spannable 的文本,并将掩码中指示的链接类型的所有出现转换为可点击的链接。 如果掩码不为零,它还会删除任何附加到 Spannable 的现有 URLSpans,以避免在同一文本上重复调用它时出现问题。
另一方面 https://developer.android.com/reference/android/text/util/Linkify#addLinks(android.text.Spannable,%20int,%20java.util.function.Function%3Cjava.lang.String,%20android.text.style.URLSpan%3E)
public static final boolean addLinks (Spannable text,
int mask,
Function<String, URLSpan> urlSpanFactory)
扫描提供的 Spannable 的文本,并将掩码中指示的链接类型的所有出现转换为可点击的链接。如果掩码不为零,它还会删除任何附加到 Spannable 的现有 URLSpans,以避免在同一文本上重复调用它时出现问题。
【讨论】:
你可以澄清一下。我正确理解应该没有差异。当我运行我的代码时,我可以看到差异。对于模式,不会删除 UrlSpan。以上是关于使用正则表达式突出显示文本中的链接(Linkify vs Patterns)的主要内容,如果未能解决你的问题,请参考以下文章
Python:使用JSON API链接通过正则表达式显示命名捕获组