1

我正在寻找一些帮助来从 HTML 编码的字符串中识别模式。

如果我有一个 HTML 编码字符串,例如:

string strHTMLText=@"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>"

我需要提取单词[[@Code1]], [@Code2], [[@Code3]],这是动态的,它们的数量是未知的。这些词已用于替换提供的 HTML 文本中的其他值。

我想识别模式[[@ something ]]并将所有出现的事件填充到数组等中,以便我可以处理这些值以稍后从数据库中获取相关值。

4

3 回答 3

4
string strHTMLText=@"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>";
var input = HttpUtility.HtmlDecode(strHTMLText);
var list = Regex.Matches(input, @"\[\[@(.+?)\]\]")
    .Cast<Match>()
    .Select(m => m.Groups[1].Value)
    .ToList();
于 2012-09-12T06:29:58.493 回答
0

直到有人提出正则表达式解决方案,为了好玩,我为你做了这个:

string strHTMLText=@"&lt;p&gt;Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.&lt;/p&gt;";

IEnumerable<string> arr = strHTMLText.Split(new char[] {'['};
List<string> output = new List<string>();
foreach(var item in arr)
{
string placeHolder = item.Substring(0,item.IndexOf("]");
output.Add(placeHolder);
}

要将输出放入数组中:

output.ToArray();
于 2012-09-12T06:19:01.940 回答
0

您可以使用正则表达式。

尝试使用这个表达式

Regex exp = new Regex("\[.+?\]")
MatchCollection mc = exp.matches(<Your string here>);
foreach(Match m in mc)
{
   String code = m.value;
}

我还没有测试过这段代码,它是一个快速而肮脏的伪代码,所以请多多包涵。

于 2012-09-12T06:32:26.083 回答