2015-05-20 42 views
-1

我试图解析字符串的内容,看看是否字符串包含的URL,以完整的字符串转换为HTML,使串点击。提取字符串分隔符之间的所有子串在一个字符串(C#)

我不知道是否有这样做的更聪明的方式,但我开始尝试创建C#中的字符串分割方法,或Regex.Split解析器。但我找不到一个好办法。

(这是一个ASP.NET MVC应用程序,所以可能有这样的一些更聪明的方式),我想前

。转换字符串;

"Customer office is responsible for this. Contact info can be found {link}{www.customerservice.com}{here!}{link} More info can be found {link}{www.customerservice.com/moreinfo}{here!}{link}" 

进入

"Customer office is responsible for this. Contact info can be found <a href=www.customerservice.com>here!</a> More info can be found <a href=www.customerservice.com/moreinfo>here!</a>" 

{link}{url}{text}{link} --> <a href=url>text</a> 

任何人有一个很好的建议?我也可以改变输入字符串的格式。

+1

试使用一些模板引擎,这里有几个:http://stackoverflow.co m/a/340243/351383 –

回答

2

您可以使用以下方法来匹配:

{link}{([^}]*)}{([^}]*)}{link} 

并将其替换:

<a href=$1>$2</a> 

DEMO

说明:

  • {link}比赛{link}字面上
  • {([^}]*)}匹配在捕获组2(用于值)
  • {link}匹配{link}字面上再次
+0

谢谢:)正是我需要的!有用。 – user2590683

+0

乐意帮忙:) –

1

捕获组1(用于URL)

  • {([^}]*)}匹配除了}所有字符除了}所有字符你可以使用正则表达式作为

    {link}{(.*?)}{(.*?)}{link} 
    

    和替换操作作为

    <a href=\1>\2</a> 
    

    Regex

  • 1

    为您简单的链接的格式{link}{url}{text}您可以使用简单的Regex.Replace

    Regex.Replace(input, @"\{link\}\{([^}]*)\}\{([^}]*)\}", @"<a href=""$1"">$2</a>"); 
    
    +0

    谢谢:)正是我需要的!有用。 – user2590683

    0

    此外,非正则表达式的想法可以帮助

    var input = "Customer office is responsible for this. Contact info can be found {link}{www.customerservice.com}{here!}{link} More info can be found {link}{www.customerservice.com/moreinfo}{here!}{link}"; 
    
    var output = input.Replace("{link}{", "<a href=") 
            .Replace("}{link}", "</a>") 
            .Replace("}{", ">"); 
    
    相关问题