如果文本中不存在,则在文本中添加http://www.

11

我该如何判断一段文本中是否包含"http://www.",我想在Web视图中显示域名。域名写在TextView中,但没有添加前缀的限制。如果用户未输入,则必须添加并在webview中显示URL。

6个回答

28

你可以像这样做

String url = textView.getText().toString();
if(!url.startsWith("www.")&& !url.startsWith("http://")){
  url = "www."+url;
}
if(!url.startsWith("http://")){
  url = "http://"+url;
}

您可以使用此URL在WebView中显示内容。

希望这能解决您的问题。


这种方法比使用正则表达式要简单一些。无论如何,您还应该处理用户输入“www.domain.com”的情况。 - Sébastien
嘿,Sebastien,请再检查一下答案。 - silwar
嗯,这种方法有问题(你可能最终会得到像www.http://www.domain.com这样的URL)。不管怎样,我认为作者会根据自己的需求调整代码。 - Sébastien
嗨,Sebastian,请检查改进的答案。 - silwar
如果(!byte_link.startsWith("www.") ){ 如果 (!byte_link.startsWith("http")) { byte_link = "www." + byte_link; } } 如果(!byte_link.startsWith("http://")){ byte_link = "http"+byte_link; }需要进行修正。 - Ashish Pardhiye

5

我刚刚修改了 @silwar 的答案,并添加了 https:

 if(!url.startsWith("www.")&& !url.startsWith("http://") && !url.startsWith("https://")){
        url = "www."+url;
    }
    if(!url.startsWith("http://") && !url.startsWith("https://")){
        url = "http://"+url;
    }

但是请记住,有时候在安卓设备上使用http://会产生安全异常,因此我们应该使用https://。所以为了编写风险更小的代码,我们需要像最后一个检查一样执行以下操作 -

 if(!url.startsWith("http://") && !url.startsWith("https://")){
            url = "https://"+url;}

3

检查域名是否格式正确且包含(或不包含)前缀的最有效方法是使用正则表达式。

请查看Java Pattern以在Android中匹配正则表达式。这很值得一试。


链接失效(404)。 - mitsest

2

根据Sebastien的要求,正则表达式是一个很好的选择。 您还可以从视图中获取文本,创建URI对象。

Uri uri = Uri.create(view.getText().toString());

然后使用uri.somemethod,你可以获取关于url的所有信息。 如果uri创建失败,你需要生成错误消息,因为出现了问题。


1
我会从TextView中获取文本并通过startsWith()进行解析。 如果这是错误的,只需将其添加到文本中并使用setText()重新分配它。
您可能还想检查其他表达式,例如仅“www。”。因此,请仔细查看contains()。

-2

试试这个

String a = "http://";
webview.loadUrl(a + url.getText().toString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接