我正在尝试解析字符串的内容以查看字符串是否包含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>"
有人有个好主意吗?我也可以改变输入字符串的格式化方式。
答案 0 :(得分:1)
您可以使用以下内容进行匹配:
{link}{([^}]*)}{([^}]*)}{link}
并替换为:
<a href=$1>$2</a>
请参阅DEMO
说明:
{link}
字面上匹配{link}
{([^}]*)}
匹配捕获组1中的}
以外的所有字符(用于网址){([^}]*)}
匹配捕获组2中的}
以外的所有字符(对于值){link}
再次匹配{link}
答案 1 :(得分:0)
答案 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("}{", ">");