在我的ASP.NET应用程序中,我有一个纯文本字段。我想允许用户以下列格式输入URL:
[url="http://www.google.com"]Google[/url]
这些将在输入时直接保存到数据库中。但是,在检索时,我想将上述内容转换为以下HTML格式,以使其在屏幕上显示:
<a href="http://www.google.com">Google</a>
这种方法的原因是为了避免篡改内置的ASP.NET验证例程,当它在表单输入字符串中看到<a
时会触发错误。
我在StackOverflow上看过其他示例,其中RegEx用于解析字符串,但是,我找不到任何可以在单个字符串中多次出现[url...]
的情况下可以遵循的内容。
任何人都可以请我提供一个如何解析这样一个字符串的例子,比如说......
尝试这个时髦的新搜索引擎: [url =“http://www.google.com”] Google [/ url]或者这个旧版本 当天:[url =“http://uk.altavista.com”] AltaVista [/ url]
...将每个事件转换为所需的格式? RegEx不是我的遗憾。
感谢。
答案 0 :(得分:1)
根据HamZa DzCyberDeV的评论,我在RegexHero中使用了RegEx模式,发现RegExHero甚至生成了ASP.NET。因此,下面的简单代码完全达到了我需要的结果:
Dim s As String = txt_input.Text.Trim
Dim strRegex As String = "\[url\s?=\s?""?(.*?)""?\](.*?)\[\/url\]"
Dim myRegex As New Regex(strRegex)
Dim strReplace As String = "<a href=""$1"">$2</a>"
ltl_output.Text = myRegex.Replace(s, strReplace)
答案 1 :(得分:0)
据我所知,您需要一个用于ASP.NET的BBCode转换器,您可以找到here。
来自给定链接的示例:
string BBCodeSyntax = "[url={webaddress}]{display}[/url]";
string HtmlSyntax = "<a href=\"{webaddress}\">{display}</a>";
string Fields = "{webaddress};{display}";
string input = "For those who code - [url=http://www.codeproject.com]The CodeProject[/url]. This website contains lots of articles about programming. For open source project hosting from Microsoft, you may have a look at [url=http://www.codeplex.com]Codeplex.com[/url].";
string output = BBCode.ConvertToHtml(input, BBCodeSyntax, HtmlSyntax, Fields);
return output;