我想从字符串中获取网址,以便在WebView
中显示网址。
示例字符串:
exp 1- Hello dilip refer this url www.google.com.
exp 2- hi ramesh this is good for android http://android.com
我只想www.google.com
和http://android.com
如何将它们从字符串中拆分
答案 0 :(得分:2)
如果您只是想从字符串中检索URL,我建议您只想在stackoverflow上查找问题。
像这样:
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");
}
从这篇文章:https://stackoverflow.com/a/11007981/1164919 您将在同一个帖子中找到更多关于如何执行此操作的片段和建议。
但是如果你想亲自去理解它是如何工作的。您还可以创建自己的简单代码段来检测字符串中是否存在URL。
例如,您也可以使用if(String.Contains("something"))
。如果你的输入存在于String中,这将简单地返回true或false。
有很多例子等着你去读。
搜索以下内容:regex
或者如果是硬,String.split
等等。
答案 1 :(得分:1)
我建议将字符串拆分为所有没有空格的子字符串,然后选择包含“。”的子字符串。嵌入在其他角色之间。在普通英语中,“。”只会出现在URL中。
答案 2 :(得分:1)
这是一种可能的解决方案。以下正则表达式假设它在一个字母跟在一个字母后面找到了一个URL,并且一个字母立即跟随该字段。以下是一些匹配的例子:
t.t
hello.aspx
www.google.com
http://android.com
http://android.com/test/test.aspx
https://www.stackoverflow.com/questions.html?type=android
www.google.com/android/games.aspx#hello
这是正则表达式(与IgnoreCase选项一起使用):
(https?://)?[-A-Z0-9]+\.[-A-Z0-9.]+(/[-A-Z0-9+&@#/%=~_|!:,.;?]*)?
针对示例文本运行它会返回您想要的URL。
这里有一些使用这个正则表达式的示例Java代码:
String testInputString = "Test 1 www.google.co.uk Test 2 www.google.co.in Test 3 www.google.com Test 4 http://android.com Test 5 meta.stackoverflow.com";
Pattern p = Pattern.compile("(https?://)?[-A-Z0-9]+\\.[-A-Z0-9.]+(/[-A-Z0-9+&@#/%=~_|!:,.;?]*)?", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Matcher m = p.matcher(testInputString);
while (m.find()) {
System.out.println(m.group(0));
}
答案 3 :(得分:0)
假设您的字符串如下所示,您可以使用以下正则表达式来提取www.google.com和http://android.com。
String s = "Hello dilip refer this url www.google.com. hi ramesh this is good for android http://android.com";
Pattern pc = Pattern.compile("((http://)|(www.))[A-Z,a-z]+.com");
Matcher matcher = pc.matcher(s);
while(matcher.find())
{
System.out.println("String Extracted "+matcher.group());
}
输出
String Extracted www.google.com
String Extracted http://android.com
注意:上述内容不适用于此类网址http://meta.stackoverflow.com,www.google.co.uk和b3ta.com。
编辑:
String s = "Hello dilip refer www.google.co.uk www.google.co.in this url www.google.com. hi ramesh this is good for android http://android.com hello there meta.stackoverflow.com";
Pattern pc = Pattern.compile("((http://)|(www.))([A-Z,a-z,0-9])+((.com)|(.co.[a-z]{2}))|([A-Z,a-z,0-9].[A-Z,a-z,0-9])+.com");
Matcher matcher = pc.matcher(s);
while(matcher.find())
{
System.out.println("String Extracted "+matcher.group());
}
输出:
String Extracted www.google.co.uk
String Extracted www.google.co.in
String Extracted www.google.com
String Extracted http://android.com
String Extracted meta.stackoverflow.com
即使上述情况也不完美。但是,如果你可以修改上面的正则表达式它应该帮助你