我如何知道某些文本包含“http://www”。我想在 Web 视图中显示域。域名写在TextView中,但不限制添加前缀。如果用户没有输入它,我必须在 webview 中添加并显示 URL。
你可以这样做
String url = textView.getText().toString();
if(!url.startsWith("www.")&& !url.startsWith("http://")){
url = "www."+url;
}
if(!url.startsWith("http://")){
url = "http://"+url;
}
您可以使用此url在WebView中显示内容
希望这能解决您的问题
刚刚修改了@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 您应该能够获得有关您想知道的网址的所有信息。 如果 uri 无法创建,您会生成错误消息,导致出现问题。
我只需从 TextView 获取文本并通过startsWith() 解析它。 如果这是 false,只需将其添加到文本中并使用 setText() 重新分配它。
您可能还想检查其他表达方式,例如“www.”。所以仔细看看 contains()。
2024 年最后 : 验证现代时代的网址(实际上它对我有用):
public static @NonNull String validateUrl(String url ) {
if (url.startsWith("http://")) {
url= url.replace("http://","https://" );
}
if(url.startsWith("https://")&& !url.startsWith("https://www.")){
url = url.replace("https://","https://www.");
}
if(!url.startsWith("www.")&& !url.startsWith("https://")&&
!url.startsWith("http://")&& !url.startsWith("http://www.")
&&!url.startsWith("https://www.")
){
url = "https://www."+url;
}
if(url.startsWith("www.")&& !url.startsWith("https://")&&
!url.startsWith("http://")&& !url.startsWith("http://www.")
&&!url.startsWith("https://www.")
){
url = "https://www."+url.replace("www.", "");
}
return url;
}
试试这个
String a = "http://";
webview.loadUrl(a + url.getText().toString());