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

Posted

技术标签:

【中文标题】提取字符串中字符串分隔符之间的所有子字符串(C#)【英文标题】:Extracts all sub strings between string separators in a string (C#) 【发布时间】:2015-08-01 16:54:42 【问题描述】:

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

我不确定是否有更智能的方法来执行此操作,但我开始尝试使用用于字符串的 Split 方法或 C# 中的 Regex.Split 创建解析器。但我找不到一个好的方法。

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

我想前任。转换字符串;

"Customer office is responsible for this. Contact info can be found linkwww.customerservice.comhere!link More info can be found linkwww.customerservice.com/moreinfohere!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>"

linkurltextlink --> <a href=url>text</a>

谁有好的建议?我还可以更改输入字符串的格式。

【问题讨论】:

尝试使用一些模板引擎,这里有几个:***.com/a/340243/351383 【参考方案1】:

你可以使用以下来匹配:

link([^]*)([^]*)link

并替换为:

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

见DEMO

解释:

link 匹配 link 字面意思 ([^]*) 匹配捕获组 1 中除 之外的所有字符(用于 url) ([^]*) 匹配捕获组 2 中除 之外的所有字符(用于值) link 再次匹配 link

【讨论】:

【参考方案2】:

你可以使用正则表达式

link(.*?)(.*?)link

和替换为

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

Regex

【讨论】:

【参考方案3】:

对于您的简单链接格式linkurltext,您可以使用简单的Regex.Replace

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

【讨论】:

【参考方案4】:

这个非正则表达式的想法也可能有所帮助

var input = "Customer office is responsible for this. Contact info can be found linkwww.customerservice.comhere!link More info can be found linkwww.customerservice.com/moreinfohere!link";

var output = input.Replace("link", "<a href=")
                  .Replace("link", "</a>")
                  .Replace("", ">");

【讨论】:

以上是关于提取字符串中字符串分隔符之间的所有子字符串(C#)的主要内容,如果未能解决你的问题,请参考以下文章

获取两个不同的开始和结束分隔符之间的所有子字符串

使用分隔符提取 MySQL 子字符串

Pandas DataFrame - 在两个字符串之间提取字符串并包含第一个分隔符

Hive:从/分隔列中提取子字符串

Excel - 使用 FILTERXML 从字符串中提取子字符串

如何在两个分隔符之间提取字符串[重复]