在Java中围绕文本添加HTML标记

时间:2015-10-28 14:55:10

标签: java android string replace string-parsing

从服务器"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())

中粘贴格式化的字符串

2 个答案:

答案 0 :(得分:0)

您可以在TextView xml标记上添加android:autoLink="email"

答案 1 :(得分:0)

您可以使用MatcherString内找到所有电子邮件,然后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;
}