从字符串中删除 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 等)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 帮助,从 URL 中删除一个字符串

如何使用正则表达式从字符串中删除以www。***开头的URL?

PHP 正则表达式从字符串中删除 http://

htaccess:从缺少值的查询字符串中删除 URL 参数?

.htaccess 从 URL + 目录中删除 WWW

apache配置文件从url中删除www