【问题标题】:Adding HTML tags around text in Java在 Java 中的文本周围添加 HTML 标记
【发布时间】:2016-01-28 10:11:34
【问题描述】:
从服务器"Hello, my e-mail email@email.com write here please" 获取字符串。
需要用 HTML 标签包围电子邮件并制作这样的字符串
"Hello, my e-mail <a href="mailto:email@email.com">email@email.com</a> write here please"
如何在 Java 中实现它?
我需要这样做,因为我需要将格式化的字符串粘贴到TextView.setText(Html.fromHtml())
【问题讨论】:
标签:
java
android
string
replace
string-parsing
【解决方案1】:
您可以在 TextView xml 标签上添加android:autoLink="email"
。
【解决方案2】:
您可以使用Matcher 在String 中查找所有电子邮件,然后使用replaceAll 编辑您的String,如下所示:
yourString = getHtmlString(yourString);
private String getHtmlString(String s) {
List<String> emails = getEmailsFromString(s);
if (emails.size() < 1) {
return s;
}
String result = s;
for (String email : emails) {
String toReplace = "<a href=\"" + email + "\">email@email.com</a>";
result.replaceAll(email, toReplace);
}
return result;
}
private List<String> getEmailsFromString(String s) {
List<String> emails = new ArrayList<>();
Matcher m = Pattern.compile("[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+").matcher(s);
while (m.find()) {
emails.add(m.group());
}
return emails;
}