質問する
836 次
1 に答える
3
私があなたを正しく理解していれば、これでうまくいくかもしれません。そうでない場合は、意図したテキストがどのように表示されるかの前、間、後に明確に示してください。
var nodes = doc.DocumentNode.Descendants("#text").Where(text => Regex.IsMatch(text.InnerText.Trim(), @"≤[^≥]*≥"));
string format =
@"<div class=""wrapper"" contenteditable=""false""><span class=""wrapper2""><div class=""myClass"">{0}</div><button type="" button"" class=""MergeCodeRemoveIcon"">×</button></span></div>";
foreach (var htmlNode in nodes)
{
htmlNode.InnerHtml = string.Format(CultureInfo.InvariantCulture, format, htmlNode.InnerText.Trim().Trim(new[] { '≤', '≥' }));
}
return doc.DocumentNode.OuterHtml;
これを試して:
private static string transformFromMergeCodesToHtml(string textWithMergeCodes)
{
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(textWithMergeCodes);
var nodes = doc.DocumentNode.Descendants("#text").Where(text => Regex.IsMatch(text.InnerText.Trim(), @"≤[^≥]*≥"));
string format =
@"<div class=""wrapper"" contenteditable=""false""><span class=""wrapper2""><div class=""myClass"">$2</div><button type="" button"" class=""MergeCodeRemoveIcon"">×</button></span></div>";
foreach (var htmlNode in nodes)
{
htmlNode.InnerHtml = Regex.Replace(htmlNode.InnerText.Trim(), @"(≤)([^≥]*)(≥)", format);
}
return doc.DocumentNode.OuterHtml;
}
private static string transformFromHtmlToMergeCodes(string text)
{
var doc = new HtmlDocument();
doc.LoadHtml(text);
var nodes = doc.DocumentNode.SelectNodes("//div[@class='wrapper']");
foreach (var item in nodes)
{
var innerText = "≤" + item.SelectSingleNode("//div[@class='myClass']").InnerText.Trim() + "≥";
var textNode = HtmlNode.CreateNode(innerText);
item.ParentNode.ReplaceChild(textNode, item);
}
return doc.DocumentNode.InnerHtml;
}
注:他の方法も更新しました!
于 2012-12-14T00:14:28.340 に答える