Java 如何在android中从字符串解析url?

Java 如何在android中从字符串解析url?,java,android,Java,Android,我想从android中的字符串解析url。示例字符串是 "This is a new message. The content of the message is in 'http://www.example.com/asd/abc' " 我想解析urlhttp://www.example.com/asd/abc,而不使用subString方法。只需创建一个新的URL,将字符串作为参数传递给构造函数即可。然后可以使用URL类上的各种方法访问URL的不同部分 好吧,我知道这不是你的意思。您可能会

我想从android中的字符串解析url。示例字符串是

"This is a new message. The content of the message is in 'http://www.example.com/asd/abc' "

我想解析url
http://www.example.com/asd/abc
,而不使用subString方法。只需创建一个新的URL,将字符串作为参数传递给构造函数即可。然后可以使用URL类上的各种方法访问URL的不同部分


好吧,我知道这不是你的意思。您可能会使用正则表达式,但使用子字符串是最简单的方法。为什么不想使用它?

更新:

您可以使用正则表达式和正则表达式来查找文本中的所有URL


原件:


您可以使用函数。

如果字符串总是相似的,那么快速修复方法是在单引号上使用StringTokenizer。然后您只需使用第二个令牌。

是的,这是可能的。 尝试以下代码示例

ArrayList retrieveLinks(String text) {
        ArrayList links = new ArrayList();

        String regex = "\\(?\\b(http://|www[.])[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(text);
        while(m.find()) {
        String urlStr = m.group();
        char[] stringArray1 = urlStr.toCharArray();

        if (urlStr.startsWith("(") && urlStr.endsWith(")"))
        {

            char[] stringArray = urlStr.toCharArray(); 

            char[] newArray = new char[stringArray.length-2];
            System.arraycopy(stringArray, 1, newArray, 0, stringArray.length-2);
            urlStr = new String(newArray);
            System.out.println("Finally Url ="+newArray.toString());

        }
        System.out.println("...Url..."+urlStr);
        links.add(urlStr);
        }
        return links;
        }
谢谢 Deepak使用以下方法:

public static String[] extractLinks(String text) {
    List<String> links = new ArrayList<String>();
    Matcher m = Patterns.WEB_URL.matcher(text);
    while (m.find()) {
        String url = m.group();
        Log.d(TAG, "URL extracted: " + url);
        links.add(url);
    }

    return links.toArray(new String[links.size()]);
}
公共静态字符串[]提取链接(字符串文本){
列表链接=新建ArrayList();
Matcher m=Patterns.WEB\URL.Matcher(文本);
while(m.find()){
字符串url=m.group();
Log.d(标签,“URL提取:”+URL);
添加链接(url);
}
返回links.toArray(新字符串[links.size()]);
}

如果您正在解析链接以设置其样式,Linkify是一个优雅的解决方案:

descriptionTextView.setText("This text contains a http://www.url.com")
Linkify.addLinks(descriptionTextView, Linkify.WEB_URLS);
您还可以更改链接的默认颜色:

descriptionTextView.setLinkTextColor(ContextCompat.getColor(getContext(),
                R.color.colorSecondary));
结果如下所示:


(未格式化的原始帖子有误导性-你的答案也是我的第一个想法-看看问题现在看起来如何)它将是一个RegExp,然后-总是在单引号字符中找到url,或者你通常需要url的匹配器吗?尝试我发布的方法字符串可能并不总是相似。