使用正则表达式突出显示文本中的链接Linkify vs Patterns

问题描述

为什么,使用这种方法,我们将只使用最后一种模式:

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)

解决方法

基于文档: 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,%20android.text.style.URLSpan%3E)

public static final boolean addLinks (Spannable text,int mask,Function<String,URLSpan> urlSpanFactory)

扫描提供的 Spannable 的文本并将掩码中指示的所有链接类型的出现转换为可点击的链接。如果掩码不为零,它还删除附加到 Spannable 的任何现有 URLSpans,以避免在同一文本上重复调用它时出现问题

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...