是否有一种通用算法可以从某些字符串中删除网址?
例如:
string1 = "bla bla bla http://bla.domain.com more blah blah nohttp.domain.with.no.protocol more text bla bla"
(string2, urls) = wild_magic_appears(string1)
string2 = "bla bla bla more blah blah more text bla bla"
urls = ["http://bla.domain.com", "nohttp.domain.with.no.protocol"]
我知道正则表达式是最好的解决方案,但我对非正则表达式解决方案很感兴趣
答案 0 :(得分:1)
在C#中,您可以为以“http://”
开头的网址执行此操作string str1 = "bla bla bla http://bla.domain.com more blah blah nohttp.domain.with.no.protocol";
string [] array = str1.Split(' ');
Listr<string> urls= new List<string>();
foreach(var s in array)
{
if(s.StartsWith("http://")) // you can add here other conditions that match url
urls.Add(s);
}
答案 1 :(得分:0)
Ruby,拆分冒号和空格。
仅限于以http://开头的网址,而您的字符串部分没有冒号。
>a = "bla bla bla http://bla.domain.com more blah blah nohttp.domain.with.no.protocol more text bla bla"
>a.split(":")[0].to_s[-4..-1] + ":" + a.split(":")[1].split()[0].to_s
=> "http://bla.domain.com"
只有点的网址。我想不出一个好的解决方案。
答案 2 :(得分:0)
想一个新的解决方案。只需要拆分“http://”或“https://”。 这个更好地处理用户的冒号。
>a = "bla bla bla http://bla.domain.com more blah blah nohttp.domain.with.no.protocol more text bla bla"
>("http://"+a.split("http://")[1].to_s).split()[0]
=>"http://bla.domain.com"