java - 从短信中提取 URL

标签 java android url sms

我想要实现的是提取短信中包含的所有 URL。当我说全部时,我指的是所有可点击的文本,即 SMS 中带下划线的文本。这是我正在尝试的代码,它可以工作,但前提是 URL 以 http/https/ftp 开头...而且我还需要获取没有它的 URL。

public static List<String> extractUrls(String sms) {
    List<String> containedUrls = new ArrayList<String>();
    String text = sms;

    // Split the sms to analyze if each part is a URL
    String[] split = text.split(" ");

    // Attempt to convert each item into an URL
    for (int i = 0; i < split.length; i++) {
        if (URLUtil.isValidUrl(split[i])) containedUrls.add(split[i]);
    }

    return containedUrls;
}

最佳答案

你可以尝试使用正则表达式

public static List<String> extractUrls(String sms) {
List<String> containedUrls = new ArrayList<String>();
String text = sms;

// Split the sms to analyze if each part is a URL
String[] split = text.split(" ");

Pattern p = Pattern.compile("(@)?(href=')?(HREF=')?(HREF=\")?(href=\")?(http://)?[a-zA-Z_0-9\\-]+(\\.\\w[a-zA-Z_0-9\\-]+)+(/[#&\\n\\-=?\\+\\%/\\.\\w]+)?");

// Attempt to convert each item into an URL
for (int i = 0; i < split.length; i++) {
    if (p.matcher(split[i]).matches()) containedUrls.add(split[i]);
}

return containedUrls;
}

关于java - 从短信中提取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42762791/

相关文章:

java - 数据截断: Incorrect datetime value: '

android - 在 View 分页器中的页面之间移动时,Edittext 自动获得焦点

javascript - IE 中 window.URL 的替代方案是什么?

java - Mockito.any(class) 生成无效使用匹配器异常

java - 您知道的所有 Maven Archetype 目录的 URL 是什么?

java - 如何从 Json 格式的文件中反序列化通用对象

java - 我们可以在 android 应用程序中使用几乎所有标准 Java 包吗?

java - Android 上使用最广泛的提要解析库是什么

php - 使用 PHP 查找 URL 的一部分

javascript - 选择选项 onclick 更改 url 或更改 div