簡體   English   中英

識別模式以從C#HTML編碼字符串中提取單詞

[英]Recognize pattern to extract words from C# HTML Encoded String

我正在尋找一些幫助識別來自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 ]]並填充數組等中的所有匹配項,以便我可以處理這些值以便稍后從數據庫中獲取相關值。

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();

直到有人帶來正則表達式解決方案,為了好玩,我為你做了這個:

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();

您可以使用正則表達式。

嘗試使用此表達式

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

我沒有測試過這段代碼,它是一個快速而又臟的偽代碼,所以請耐心等待。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM