Nachdem ich mich umgesehen habe, habe ich versucht, Zaids Antwort zu verbessern, indem ich den try-catch-Block entfernt habe. Außerdem werden bei dieser Lösung mehr Muster erkannt, da sie eine Regex verwendet.
Besorgen Sie sich also erst einmal dieses Muster:
// Pattern for recognizing a URL, based off RFC 3986
private static final Pattern urlPattern = Pattern.compile(
"(?:^|[\\W])((ht|f)tp(s?):\\/\\/|www\\.)"
+ "(([\\w\\-]+\\.){1,}?([\\w\\-.~]+\\/?)*"
+ "[\\p{Alnum}.,%_=?&#\\-+()\\[\\]\\*$~@!:/{};']*)",
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
Verwenden Sie dann diese Methode (unter der Annahme, dass str
ist Ihre Zeichenkette):
// separate input by spaces ( URLs don't have spaces )
String [] parts = str.split("\\s+");
// get every part
for( String item : parts ) {
if(urlPattern.matcher(item).matches()) {
//it's a good url
System.out.print("<a href=\"" + item + "\">"+ item + "</a> " );
} else {
// it isn't a url
System.out.print(item + " ");
}
}