C#Regex.Replace

时间:2011-08-02 18:15:50

标签: c# regex

这是我在richtextbox1中的字符串设置..

/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 :(得分:7)

这里不需要正则表达式。迭代列表中的项目,并使用String.Format构建所需的URL。

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

如果要在预先添加字符串之前检查该文本框中的某个项目是否为完整格式的URL,请使用String.StartsWithdoc)。

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

答案 1 :(得分:4)

由于您正在处理URI,因此您可以利用可以解析相对URI的Uri Class

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}

答案 2 :(得分:3)

原始正则表达式模式为^/,这意味着它将匹配行开头的斜杠。

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