2013-05-12 80 views
2

的查詢部分提取一個網址我怎樣才能提取有效的URL字符串中像這樣的在另一個URL

h*tps://www.google.com/url?q=h*tp://www.site.net/file.doc&sa=U&ei=_YeOUc&ved=0CB&usg=AFQjCN-5OX 

我想提取這一部分:h*tp://www.site.net/file.doc,這是我的合法的URL。

+1

你從字符串哪一位? – 2013-05-12 08:50:02

+0

你的意思是什麼?你是否會用「t」或其他什麼來替換「*」? – FeliceM 2013-05-12 08:50:22

+1

正則表達式是正確的路要走。定義你想要提取的模式,得到正則表達式的匹配並選擇你需要的模式。 – Saravanan 2013-05-12 08:50:54

回答

5

添加System.Web.dll程序集和使用HttpUtility類的靜態方法。 例如:

using System; 
using System.Web; 


class MainClass 
{ 
    public static void Main (string[] args) 
    { 
     Uri uri = new Uri("https://www.google.com/url?q=http://www.site.net/file.doc&sa=U&ei=_YeOUc&ved=0CB&usg=AFQjCN-5OX"); 
     Uri doc = new Uri (HttpUtility.ParseQueryString (uri.Query).Get ("q")); 
     Console.WriteLine (doc); 
    } 
} 
+0

隨着協議爲'H * tps',將'。 Uri'解析正確的字符串? – 2013-05-13 10:42:29

+0

Uri正確解析字符串 – Denis 2013-05-13 11:28:50

+0

那是不正確的,測試過並且得到了一個'無效的URI:URI方案無效.'''''''''''''''' – 2013-05-13 15:36:22

0
與你貼,你可以做到這一點的字符串這種特殊情況下

string input = "your URL"; 
string newString = input.Substring(36, 22) ; 

但如果該URL變化的初始部分的長度,你也想提取變化部分的lenght ,那就不行了。

+0

這也是有用的,謝謝: – 2013-05-12 09:39:16

+0

你可以用int變量替換數字(36,22),並將計數字符的值固定爲某個特定值。我的回答非常基本。 – FeliceM 2013-05-12 09:40:45

+0

@NaourassDerouichi:請使用Uri類和ParseQuery實用程序來處理URL。 – nhahtdh 2013-05-12 09:44:30

1

我不知道你的其他字符串可以是什麼樣子,但如果你的「有效的URL」是第=和第一&之間,你可以使用:

(?<==).*?(?=&) 

它基本上看起來爲第一個=並匹配下一個&之前的任何內容。

測試here

1

可以使用split功能

string txt="https://www.google.com/url?q=http://www.site.net/file.doc&sa=U&ei=_YeOUc&ved=0CB&usg=AFQjCN-5OX"; 

    txt.split("?q=")[1].split("&")[0]; 
+0

背後還有一堆垃圾。 – nhahtdh 2013-05-12 09:46:03

+0

好的。 可以使用這樣: 'txt.split( 「Q =」)[1] .split(」 &")[0];' – Virus 2013-05-12 09:53:34

+1

請編輯到您的職位 – nhahtdh 2013-05-12 09:55:23