从字符串中删除 URL 前缀(http:/、www 等)[关闭]
Posted
技术标签:
【中文标题】从字符串中删除 URL 前缀(http:/、www 等)[关闭]【英文标题】:Remove URL Prefix from String (http:/, www, etc.) [closed] 【发布时间】:2013-05-16 10:25:11 【问题描述】:我需要从我的字符串中删除各种“网络起点”
我的 TextView 必须没有 "http://" 、 "http:// www." ,“万维网”和其他 URL 前缀。
请你帮我解决这个问题?
【问题讨论】:
我不知道没有android,但是没有类似字符串的替换功能吗?然后你可以简单地用一个空字符串替换这些字符串,就是这样...... 你对“web beginnings”的使用告诉我,在开始这个项目之前,你可能需要学习一些 URI 方案基础知识。 【参考方案1】:使用URI
的一个实例,并使用它进行任意拆分:
URI uri = new URI(whateverYourAddressStringIs);
String path = uri.getPath(); // split whatever you need
http://developer.android.com/reference/android/net/Uri.html
【讨论】:
这应该是公认的答案。 代码似乎正在使用java.net.URI
,但您链接到android.net.Uri
时没有任何cmets。这有点奇怪。
正确的做法是:Uri uri = Uri.parse("example.com");
似乎不起作用。当地址中包含http://
或https://
时,URI 和Uri getPath()
都返回一个空字符串。如果地址以www.
开头,getPath()
也包括它。因此,这不是正确的答案。
警告:getPath()
忽略了 Uri 的查询和片段部分【参考方案2】:
你可以通过使用正则表达式来做到这一点
"www.aaa".replaceFirst("^(http[s]?://www\\.|http[s]?://|www\\.)","")
【讨论】:
正则表达式析取的顺序在这里很重要 - 它应该是replaceFirst("^(http://www\\.|http://|www\\.)","")
来处理 http://www.
的情况。
@Josh 你是对的。我已经确定了我的答案。谢谢。
@kingori ,如果我们不确定url是http还是https开头怎么办。
由于问题中提到了其他 URL 前缀,因此也需要更新以包含 https。 "www.aaa".replaceFirst("^(https://www\\.|http://www\\.|http://|https://|www\\.)","");
@IshanThilinaSomasiri 好点。我已将 (?>s) 附加到 http 以处理 https 案例。【参考方案3】:
你可以使用字符串替换。
String myString = "http://www.abc.com";
myString.replace("http://","").replace("http:// www.","").replace("www.","");
【讨论】:
与已接受答案的注释相同,"www."
可能出现在 URL 中的其他位置,您应该只从一开始就将其删除。【参考方案4】:
我假设当您说“网络开始”时,您的意思是“协议”。您可以在RFC 或wikipedia 中了解有关网址的更多信息。
一般来说,您不能删除“www”。从一个 URL 并保证该 URL 将指向同一个主机。如果您只想对用户隐藏它,那很好,但我个人觉得这很烦人。
以下代码将剥离 Java 知道的所有协议,而不仅仅是 http。并非所有协议都有 //,因此您必须手动检查。 Java URL class 可以根据您的需要准确地分解 URL。
import java.net.URL;
public class test
public static void main(String[] args)
try
URL url = new URL(args[0]);
String protocol = url.getProtocol();
String result = args[0].replaceFirst(protocol + ":", "");
if (result.startsWith("//"))
result = result.substring(2);
System.out.println(result);
catch (Exception e)
System.out.println(e);
【讨论】:
【参考方案5】:你可以使用 String.replace() 方法。
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
【讨论】:
以上是关于从字符串中删除 URL 前缀(http:/、www 等)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用正则表达式从字符串中删除以www。***开头的URL?