Обычно это делается либо с помощью регулярного выражения, либо с помощью indexOf
и substring
.
С помощью регулярного выражения это можно сделать так:
// This is using a VERY simplified regular expression
String str = "internet address : http://test.com Click this!";
Pattern pattern = Pattern.compile("[http:|https:]+\\/\\/[\\w.]*");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
System.out.println(matcher.group(0));
}
Вы можете прочитать здесь, почему это упрощено: https://mathiasbynens.be/demo/url-regex [114 ] - tl; dr: проблема с URL заключается в том, что они могут иметь так много разных шаблонов, которые являются действительными.
С помощью split можно было бы использовать класс URL Java:
String[] split = str.split(" ");
for (String value : split) {
try {
URL uri = new URL(value);
System.out.println(value);
} catch (MalformedURLException e) {
// no valid url
}
}
Вы можете проверить их валидацию в источнике OpenJDK здесь .
Пример, снятый с главы PCL по ФОРМАТУ:
(format nil "~12d" 1000000) ==> " 1000000"
(format nil "~12,'0d" 1000000) ==> "000001000000"