[英]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=@"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>";
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.