Java 将部分url字符串转换为完整url字符串

Java 将部分url字符串转换为完整url字符串,java,string,url,uri,Java,String,Url,Uri,我正在开发一个网络浏览器。是否有一种内置方法可以转换部分url字符串,如“example.com”或“www.example.com”等。。。到“http://www.example.com/“?从你的问题中我了解到,这是你假装的 String url = "www.example.com" //Checks if the string does not start with http:// if (!url.startsWith("http://" && !url.endsW

我正在开发一个网络浏览器。是否有一种内置方法可以转换部分url字符串,如
“example.com”
“www.example.com”
等。。。到
“http://www.example.com/“

从你的问题中我了解到,这是你假装的

String url = "www.example.com"

//Checks if the string does not start with http://
if (!url.startsWith("http://" && !url.endsWith("/") {
    //Appends the http in the begginning of the String
    url.insert(0, "http://");
}
//Checks if the string does not end with /
if (!url.endsWith("/") {
    //Appends the slash in the end of the url
    url.append("/");
}

请注意,我添加了url字符串的验证,因为在某些情况下,我猜您无法确定url格式。

我不确定这是否会解决您的问题,但我可能建议使用内置url类来尝试解决此问题。请查看下面的链接,并确定它们是否有用


假设您正在尝试对web浏览器位置栏中键入的
字符串进行操作,那么您唯一可以放心地做的事情就是检查字符串是否已以“http://”或“https://”或某些其他方案(如“ftp://”)开头,如果没有,则在开头加上“http://”

正如评论中提到的,假设子域应设置为“www”是错误的,因为并非所有web服务器都配置了此子域。(如果网站所有者愿意,web服务器很容易配置为将请求重定向到“www”子域。)

所以我想说,您需要的代码是:

// Create a static final class field.
static final Pattern STARTS_WITH_SCHEME = Pattern.compile("^ *[a-z]+://");

// Then within your method code make use of the Pattern.
if (!STARTS_WITH_SCHEME.matcher(urlString).find()) {
    urlString = "http://" + urlString.trim();
}

这将检查您的
urlString
是否以任何方案开头,后跟冒号和双斜杠。如果没有,则将在您的
urlString
前面加上“http://”。请注意,
模式
允许空格出现在
urlString
的最开头,然后方法代码将其修剪掉。

gmail.com
既不是URL,也不是URI。这是一个域名,维基百科总是很好的。我想你没有意识到我的问题。我编辑了我的帖子。请注意,
www.
不一定是一个有效的子域(例如,
en.wikipedia.org
有效,但
www.en.wikipedia.org
无效)。这并不能处理所有情况。。。我相信有一种内置的方法可以将所有案例转换为正确的URL。我不能忘记结尾处的“/”!谢谢,我还没有注意到这一部分。更新了我的答案。你可能想做
!url.endsWith(“/”)
一个单独的检查,因为字符串可以有一个,但不能有另一个。@SaharAvr据我所知,没有内置的,所以您只需手动执行即可。这只是处理字符串的问题。