我有一个文字区域。 我允许输入html标记,因为可以输入任何html代码。
现在我想将html代码转换为纯文本,而不使用第三方工具......怎么做呢
目前我正在这样做: -
var desc = Convert.ToString(Html.Raw(Convert.ToString(drJob["Description"])));
drJob [“Description”]是我从中获取描述的数据行,我想将描述转换为纯文本。
答案 0 :(得分:2)
没有直接来自.NET的方法来做到这一点。您需要使用HtmlAgilePack等第三方工具,或者在javascript中执行此操作。
document.getElementById('myTextContainer').innerText = document.getElementById('myMarkupContainer').innerText;
为了您的安全,请勿使用正则表达式。 (http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html)
答案 1 :(得分:1)
您可以使用System.Text.RegularExpressions.Regex
String desc = Regex.Replace(drJob["Description"].ToString(), @"<[^>]*>", String.Empty);
答案 2 :(得分:0)
您可以使用正则表达式“&lt; [^&gt;] +&gt;”
简单地使用替换方法答案 3 :(得分:0)
using System.Text.RegularExpressions;
private void button1_Click(object sender, EventArgs e)
{
string sauce = htm.Text; // htm = your html box
Regex myRegex = new Regex(@"(?<=^|>)[^><]+?(?=<|$)", RegexOptions.Compiled);
foreach (Match iMatch in myRegex.Matches(sauce))
{
txt.AppendText(Environment.NewLine + iMatch.Value); //txt = your destination box
}
}
如果您需要更多说明,请与我们联系。
[编辑:]请注意,这不是一个干净的功能,所以添加一行来清理空格或换行符。但实际从中间标签获取文本应该可以正常工作。如果你想节省空间 - 使用正则表达式,看看这是否适合你。虽然发布关于正则表达不干净的人是对的,但可能还有其他方法;从html中分离单一类型的标记时,正则表达式通常更好。 (我用雨量计来解析东西而且没有任何问题)