提取字符串中字符串分隔符之间的所有子字符串(C#)

时间:2015-05-20 12:32:12

标签: c# asp.net regex string parsing

我正在尝试解析字符串的内容以查看字符串是否包含url,将完整字符串转换为html,以使字符串可单击。

我不确定是否有更聪明的方法可以做到这一点,但我开始尝试使用Split方法创建一个解析器,或者使用C#中的Regex.Split。但我找不到一个好办法。

(这是一个ASP.NET MVC应用程序,所以也许有一些更聪明的方法可以做到这一点)

我想要前。转换字符串;

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<select id="selectprice" name="prod1">
<option value="1">prod1</option>
<option value="2">prod2</option>
<option value="3">prod3</option>
</select>

<input type="text" id="valueprice" name="price_incl" size="4">

"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>"

有人有个好主意吗?我也可以改变输入字符串的格式化方式。

4 个答案:

答案 0 :(得分:1)

您可以使用以下内容进行匹配:

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

并替换为:

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

请参阅DEMO

说明:

  • {link}字面上匹配{link}
  • {([^}]*)}匹配捕获组1中的}以外的所有字符(用于网址)
  • {([^}]*)}匹配捕获组2中的}以外的所有字符(对于值)
  • {link}再次匹配{link}

答案 1 :(得分:0)

你可以使用正则表达式

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

和替代

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

Regex

答案 2 :(得分:0)

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

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

答案 3 :(得分: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("}{", ">");