首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用超链接替换自定义BBCode样式标记

如何用超链接替换自定义BBCode样式标记
EN

Stack Overflow用户
提问于 2022-02-12 16:50:17
回答 2查看 34关注 0票数 1

我有一堆可以包含这种格式的自定义标记的文本:

代码语言:javascript
运行
复制
[MYLINK ID="1234" URL="http://mywebsite.com" TEXT="Website link"]

文本可以包含多个链接。我想要做的是将标记转换成普通的html链接,并在C#代码中获取in。所得到的替换标记应采用以下格式:

代码语言:javascript
运行
复制
<a href="http://mywebsite.com?id=1234">Website link</a>

因此,为了澄清,如果我有以下部分文本:

代码语言:javascript
运行
复制
This is a test [MYLINK ID="1234" URL="http://mywebsite.com" TEXT="website link"] with some more text and [MYLINK ID="2345" URL="http://mywebsite2.com" TEXT="another link"] here too.

它应将以下内容转化为:

代码语言:javascript
运行
复制
This is a test <a href="http://mywebsite.com?id=1234">website link</a> with some more text and <a href="http://mywebsite2.com?id=2345">another link</a> here too.

编辑:在过去的几个小时里一直在与Regex混搭,并设法得到以下匹配标记,但不知道下一步该做什么.

代码语言:javascript
运行
复制
\[MYLINK ID=\"(.*?)\" URL=\"(.*?)\" TEXT=\"(.*?)\"\]

任何帮助都将不胜感激。干杯,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-12 17:19:05

如果属性总是按照所显示的顺序排列,则可以使用

代码语言:javascript
运行
复制
var text = "[MYLINK ID=\"1234\" URL=\"http://mywebsite.com\" TEXT=\"Website link\"]";
var pattern = "\\[MYLINK\\s+ID=\"([^\"]*)\"\\s+URL=\"([^\"]*)\"\\s+TEXT=\"([^\"]*)\"]";
var replacement = "<a href=\"$2?id=$1\">$3</a>";
var result = Regex.Replace(text, pattern, replacement, RegexOptions.IgnoreCase);
// => <a href="http://mywebsite.com?id=1234">Website link</a>

请参阅.NET regex演示C#演示

详细信息

  • \[MYLINK - [MYLINK文本
  • \s+ -任何一个或多个空白空间
  • ID=\" - ID="文本
  • ([^\"]*) -第1组($1):除"以外的零或多个字符
  • \"\s+URL=\" - ",一个或多个空白空间,URL="文本
  • ([^\"]*) -第2组($2):除"以外的零或多个字符
  • \"\s+TEXT=\" - ",一个或多个空白空间,TEXT="文本
  • ([^\"]*) -第3组($3):除"以外的零或多个字符
  • \"] - "]文本。
票数 1
EN

Stack Overflow用户

发布于 2022-02-12 17:27:37

谢谢-当你发帖的时候我真的收到了,做了一些类似的事情.

代码语言:javascript
运行
复制
string pattern = @"\[MYLINK ID=\""(.*?)\"" URL=\""(.*?)\"" TEXT=\""(.*?)\""\]";
text = Regex.Replace(text, pattern, x => $"<a href='{x.Groups[2].Value}?id={x.Groups[1].Value}'>{x.Groups[3].Value}</a>");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71093896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档