2011-08-02 54 views
0

這是我的設置裏面richtextbox1串..C#Regex.Replace

/Category/5 
/Category/4 
/Category/19 
/Category/22 
/Category/26 
/Category/27 
/Category/24 
/Category/3 
/Category/1 
/Category/15 
http://example.org/Category/15/noneedtoadd 

我想改變一切工作的出發 「/」 包含 「http://example.com/

輸出一些網址:

http://example.com/Category/5 
http://example.com/Category/4 
http://example.com/Category/19 
http://example.com/Category/22 
http://example.com/Category/26 
http://example.com/Category/27 
http://example.com/Category/24 
http://example.com/Category/3 
http://example.com/Category/1 
http://example.com/Category/15 
http://example.org/Category/15/noneedtoadd 

只是問,這是什麼模式? :)

+3

爲什麼在需要螺絲刀時使用衝擊扳手? –

+0

我只想要模式.. :) –

回答

4

既然你正在處理的URI,你可以利用Uri Class的可以解析相對URI:

Uri baseUri = new Uri("http://example.com/"); 

Uri result1 = new Uri(baseUri, "/Category/5"); 
// result1 == {http://example.com/Category/5} 

Uri result2 = new Uri(baseUri, "http://example.org/Category/15/noneedtoadd"); 
// result2 == {http://example.org/Category/15/noneedtoadd} 
7

這裏你不需要正則表達式。遍歷列表中的項目並使用String.Format構建所需的URL。

String.Format(@"http://example.com{0}", str); 

如果想進行檢查,看在文本框的項目之一是在前面加上字符串之前完全成形的網址,然後使用String.StartsWithdoc)。

if (!String.StartsWith("http://")) { 
    // use String.Format 
} 
+0

如果在richtextbox中,有一個字符串不以**/**開頭? –

+0

所以它是/ category/1或category/1? – csano

+0

我編輯了樣本輸入和輸出 –

3

的原正則表達式是^/這意味着它會在匹配斜線該行的開始。

Regex.Replace (text, @"^/", "http://example.com/") 
+0

如果我添加多行「?m」 –

+1

我不明白你的意思是「?m」。你的意思是RegexOptions.MultiLine?如果是這樣,那對我的正則表達式無關緊要。 –