1
Pattern.compile("((http\\://|https\\://|ftp\\://|sftp\\://)|(www.))+((\\S+):(\\S+)@)?+(([a-zA-Z0-9\\.-]+\\.[a-zA-Z]{2,4})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(/[a-zA-Z0-9%:/-_\\?\\.'~]*)?");

このパターンがあります。文字列にリンクがあるかどうかをテストしたいと思います。それらのテキストを でリンクしたいと思いますTextView

&リンクに文字が含まれている場合、コードは機能しません。

完全なコード:

Pattern httpMatcher = Pattern.compile("((http\\://|https\\://|ftp\\://|sftp\\://)|(www.))+((\\S+):(\\S+)@)?+(([a-zA-Z0-9\\.-]+\\.[a-zA-Z]{2,4})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(/[a-zA-Z0-9%:/-_\\?\\.'~]*)?");
String httpViewURL  = "myhttp://"; 
Linkify.addLinks(label, httpMatcher, httpViewURL);
4

3 に答える 3

5

これは正規表現を使用するよりもきれいだと思います:

boolean isLink(String s) {
  try {
     new URL(s);
     return true;
  } catch (MalformedURLException e) {
     return false;
  }
}
于 2013-01-14T21:07:57.290 に答える
3

あなたが使用することができますPatterns.WEB_URL

public boolean isLink(String string) {
    return Patterns.WEB_URL.matcher(string).matches();
}

PatternsクラスはAPIレベル8以降でのみ使用可能ですが、ソースコードはhttps://github.com/android/platform_frameworks_base/blob/master/core/java/android/util/Patterns.javaで入手できます。

于 2013-01-14T21:13:50.023 に答える
0
Pattern httpMatcher = Pattern.compile("((http\\://|https\\://)|(www.))+((\\S+):(\\S+)@)?+(([a-zA-Z0-9\\.-]+\\.[a-zA-Z]{2,4})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(/[a-zA-Z0-9%&#-:/-_\\?\\.'~]*)?");

これは今働いています、ありがとう

于 2013-01-18T16:15:39.827 に答える