我想从android中的String解析url。示例String是
"This is a new message. The content of the message is in 'http://www.example.com/asd/abc' "
我想在不使用subString方法的情况下解析字符串中的URL http://www.example.com/asd/abc
。
答案 0 :(得分:31)
答案 1 :(得分:30)
使用此:
public static String[] extractLinks(String text) {
List<String> links = new ArrayList<String>();
Matcher m = Patterns.WEB_URL.matcher(text);
while (m.find()) {
String url = m.group();
Log.d(TAG, "URL extracted: " + url);
links.add(url);
}
return links.toArray(new String[links.size()]);
}
答案 2 :(得分:6)
是的,可能。 尝试使用以下代码示例
ArrayList retrieveLinks(String text) {
ArrayList links = new ArrayList();
String regex = "\\(?\\b(http://|www[.])[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while(m.find()) {
String urlStr = m.group();
char[] stringArray1 = urlStr.toCharArray();
if (urlStr.startsWith("(") && urlStr.endsWith(")"))
{
char[] stringArray = urlStr.toCharArray();
char[] newArray = new char[stringArray.length-2];
System.arraycopy(stringArray, 1, newArray, 0, stringArray.length-2);
urlStr = new String(newArray);
System.out.println("Finally Url ="+newArray.toString());
}
System.out.println("...Url..."+urlStr);
links.add(urlStr);
}
return links;
}
由于 迪帕克
答案 3 :(得分:4)
如果要解析链接以进行样式设置,Linkify是一个优雅的解决方案:
descriptionTextView.setText("This text contains a http://www.url.com")
Linkify.addLinks(descriptionTextView, Linkify.WEB_URLS);
您还可以更改链接的默认颜色:
descriptionTextView.setLinkTextColor(ContextCompat.getColor(getContext(),
R.color.colorSecondary));
结果如下:
答案 4 :(得分:0)
您可以创建一个新的URL,将字符串作为构造函数的参数传递。然后,您可以使用URL类上的各种方法来访问URL的不同部分。
好的,我知道这不是你的意思。您可以使用正则表达式,但使用子字符串是最简单的方法。你为什么不想用呢?答案 5 :(得分:0)
如果字符串总是相似的,那么快速修复就是在单引号上使用StringTokenizer。然后你只需要拿第二个标记。