【发布时间】:2012-05-25 21:33:11
【问题描述】:
我怎么知道某些文本包含“http://www”。我想在 Web 视图中显示域。域名写在 TextView 中,但不限制添加前缀。如果用户没有输入,我必须在 webview 中添加和显示 URL。
【问题讨论】:
标签: android android-webview textview android-textattributes
我怎么知道某些文本包含“http://www”。我想在 Web 视图中显示域。域名写在 TextView 中,但不限制添加前缀。如果用户没有输入,我必须在 webview 中添加和显示 URL。
【问题讨论】:
标签: android android-webview textview android-textattributes
你可以这样做
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的情况
www.http://www.domain.com 这样的 URL)。反正我觉得发帖人会根据自己的需要来调整代码的。
刚刚修改了@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:// 会在 android 中创建安全异常,因此我们应该使用 https://。所以对于无风险代码,我们必须像上次检查一样这样做 -
if(!url.startsWith("http://") && !url.startsWith("https://")){
url = "https://"+url;}
【讨论】:
检查域名格式是否正确以及是否包含(或不包含)前缀的最有效方法是使用正则表达式。
查看 Java Pattern 以匹配 Android 中的正则表达式。这是值得的。
【讨论】:
正如 Sebastien 所要求的,正则表达式是一个不错的选择。 你也可以从视图中获取文本,创建一个URI对象
Uri uri = Uri.create(view.getText().toString());
然后使用 uri.somemethod 您应该能够获得有关您想知道的 url 的所有信息。 如果 uri 创建失败,您会生成错误消息,导致出现问题。
【讨论】:
我只会从 TextView 中获取文本并通过startsWith() 对其进行解析。 如果这是错误的,只需将其添加到文本中并使用 setText() 重新签名即可。
您可能还想检查其他表达式,例如“www.”。所以仔细看看 contains()。
【讨论】:
试试这个
String a = "http://";
webview.loadUrl(a + url.getText().toString());
【讨论】: