从Java中的Text中删除链接?

时间:2013-10-13 12:12:18

标签: java

我需要改变这样的东西 - > Hello, go here http://www.google.com for your ... 抓取链接,并在我制作的方法中更改它,并将其替换回字符串,如此

- > Hello, go here http://www.yahoo.com for your...

这是我到目前为止所拥有的:

if(Text.toLowerCase().contains("http://"))
{
    // Do stuff                 
}
else if(Text.toLowerCase().contains("https://"))
{
   // Do stuff                  
}

我需要做的就是将String中的URL更改为不同的URL。字符串中的Url并不总是http://www.google.com,所以我不能只说replace("http://www.google.com","")

4 个答案:

答案 0 :(得分:3)

使用正则表达式:

String oldUrl = text.replaceAll(".*(https?://)www((\\.\\w+)+).*", "www$2");

text = text.replaceAll("(https?://)www(\\.\\w+)+", "$1" + traslateUrl(oldUrl));

注意:代码已更改,以满足以下评论中的额外要求。

答案 1 :(得分:0)

您可以使用以下代码从字符串中获取链接。我假设该字符串仅包含.com域

            String input = "Hello, go here http://www.google.com";
        Pattern pattern = Pattern.compile("http[s]{0,1}://www.[a-z-]*.com");
        Matcher m = pattern.matcher(input);
        while (m.find()) {
            String str = m.group();
        }

答案 2 :(得分:0)

你有没有试过像:

s= s.replaceFirst("http:.+[ ]", new link);

这将找到以http开头直到第一个空格的任何单词,并将其替换为您想要的任何内容

如果你想保留链接,那么你可以这样做:

String oldURL;
if (s.contains("http")) {
    String[] words = s.split(" ");
    for (String word: words) {
        if (word.contains("http")) {
            oldURL = word;  
            break;
        }
    }
    //then replace the url or whatever
}

答案 3 :(得分:0)

您可以尝试

private String removeUrl(String commentstr)
    {
        String urlPattern = "((https?|ftp|gopher|telnet|file|Unsure|http):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)";
        Pattern p = Pattern.compile(urlPattern,Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(commentstr);
        int i = 0;
        while (m.find()) {
            commentstr = commentstr.replaceAll(m.group(i),"").trim();
            i++;
        }
        return commentstr;
    }