如何检测字符串中URL的存在 [英] How to detect the presence of URL in a string

查看:118
本文介绍了如何检测字符串中URL的存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个输入字符串说请转到http://stackoverflow.com 。检测到字符串的url部分,许多浏览器/ IDE /应用程序自动添加锚点< a href =>< / a> 。所以它变成请转到< a href ='http://stackoverflow.com'> http://stackoverflow.com< / a>

I have an input String say Please go to http://stackoverflow.com. The url part of the String is detected and an anchor <a href=""></a> is automatically added by many browser/IDE/applications. So it becomes Please go to <a href='http://stackoverflow.com'>http://stackoverflow.com</a>.

我需要使用Java做同样的事情。

I need to do the same using Java.

推荐答案

使用java.net .URL for that !!



嘿,为什么不在java中使用核心类来获取这个java.net.URL并让它验证URL。

Use java.net.URL for that!!

Hey, why don't use the core class in java for this "java.net.URL" and let it validate the URL.

虽然以下代码违反了黄金原则仅针对异常条件使用例外,但对于我来说,尝试重新发明轮子以获得成熟的东西是没有意义的在java平台上。

While the following code violates the golden principle "Use exception for exceptional conditions only" it does not make sense to me to try to reinvent the wheel for something that is veeery mature on the java platform.

这是代码:

import java.net.URL;
import java.net.MalformedURLException;

// Replaces URLs with html hrefs codes
public class URLInString {
    public static void main(String[] args) {
        String s = args[0];
        // separate input by spaces ( URLs don't have spaces )
        String [] parts = s.split("\\s+");

        // Attempt to convert each item into an URL.   
        for( String item : parts ) try {
            URL url = new URL(item);
            // If possible then replace with anchor...
            System.out.print("<a href=\"" + url + "\">"+ url + "</a> " );    
        } catch (MalformedURLException e) {
            // If there was an URL that was not it!...
            System.out.print( item + " " );
        }

        System.out.println();
    }
}

使用以下输入:

"Please go to http://stackoverflow.com and then mailto:oscarreyes@wordpress.com to download a file from    ftp://user:pass@someserver/someFile.txt"

产生以下输出:

Please go to <a href="http://stackoverflow.com">http://stackoverflow.com</a> and then <a href="mailto:oscarreyes@wordpress.com">mailto:oscarreyes@wordpress.com</a> to download a file from    <a href="ftp://user:pass@someserver/someFile.txt">ftp://user:pass@someserver/someFile.txt</a>

当然,不同的协议可以用不同的方式处理。
您可以获取URL类的getter的所有信息,例如

Of course different protocols could be handled in different ways. You can get all the info with the getters of URL class, for instance

 url.getProtocol();

或其他属性:spec,port,file,query,ref等等

Or the rest of the attributes: spec, port, file, query, ref etc. etc

http://java.sun.com/javase/6/docs/api/java/net/URL.html

处理所有协议(at至少所有这些java平台都知道)并且作为一个额外的好处,如果有任何java当前无法识别的URL并最终被合并到URL类中(通过库更新),你将透明地获得它!

Handles all the protocols ( at least all of those the java platform is aware ) and as an extra benefit, if there is any URL that java currently does not recognize and eventually gets incorporated into the URL class ( by library updating ) you'll get it transparently!

这篇关于如何检测字符串中URL的存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆