在Java / Android中检查字符串是否包含URL的最佳方法是什么?

2022-09-01 12:40:17

在Java / Android中检查字符串是否包含URL的最佳方法是什么?最好的方法是检查字符串是否包含|。com | .net | .org | .info | .everythingelse|?还是有更好的方法来做到这一点?

该网址在Android中输入到EditText中,它可以是粘贴的网址,也可以是手动输入的网址,用户不想输入 http://...我正在开发一个URL缩短应用程序。


答案 1

最好的方法是使用正则表达式,如下所示:

public static final String URL_REGEX = "^((https?|ftp)://|(www|ftp)\\.)?[a-z0-9-]+(\\.[a-z0-9-]+)+([/?].*)?$";

Pattern p = Pattern.compile(URL_REGEX);
Matcher m = p.matcher("example.com");//replace with string to compare
if(m.find()) {
    System.out.println("String contains URL");
}

答案 2

这只需在构造函数周围进行 try catch 即可完成(无论哪种方式都是必要的)。

String inputUrl = getInput();
if (!inputUrl.contains("http://"))
    inputUrl = "http://" + inputUrl;

URL url;
try {
    url = new URL(inputUrl);
} catch (MalformedURLException e) {
    Log.v("myApp", "bad url entered");
}
if (url == null)
    userEnteredBadUrl();
else
    continue();