我在字符串上使用substr()
来输出消息中的一组字符。我的问题是,如果字符串包含HTML,我会在文本中获得标记。
在使用substr()
仅从邮件本身中提取文本之前,是否可以解析HTML?
var string = "Hi";
alert(string.substr(0, 7));
提醒:
Hi
var string = "<br/>Hi";
alert(string.substr(0, 7));
提醒:
<br/>Hi
答案 0 :(得分:4)
使用jQuery.text()
方法,您只能提取文字。
var str = "<br/>Hi"
$('<p>' + str + '</p>').text(); //Wrap your input in a p element first to ensure you get the text if your string isn't wrapped in HTML.
答案 1 :(得分:2)
您可以通过正则表达式删除html,请参阅答案here,您可以执行以下操作:
String.prototype.removeHtml=function(){
return this.replace(/(<([^>]+)>)/ig,"");
}
var string = "<br/>Hi";
alert(string.removeHtml().substr(0, 7));
答案 2 :(得分:2)
是的,使用这个:
var string = "<br/>Hi";
var stringStripped = string.replace(/(<([^>]+)>)/ig,"");
alert(stringStripped);
答案 3 :(得分:1)
如果您在DOM中读取了输入,则可以使用jQuery来获取文本。示例:
<p id="foo"><br />Hi</p>
var string = $('#foo').text();
alert(string.substr(0, 7)); //says "Hi"
请参阅reference的jQuery文档。
编辑: 如果您的输入来自其他地方,您仍然可以使用jQuery,但可能有更好的解决方案。
var input = "<br />Hi";
var fakeElement = $('<div>' + input + '</div>');
var string = fakeElement.text();
alert(string.substr(0, 7)); //says "Hi"
答案 4 :(得分:1)
您可以用正则表达式替换html-tag
var string = string.replaceAll("<[^>]*>", "");
答案 5 :(得分:1)
如果你想获得带有HTML标签的文本,请尝试使用jQuery中的.innerHTML。
<p id="foo"><br />Hi</p>
$("#foo")[0].innerHTML;
控制台:"<br />Hi"
答案 6 :(得分:0)
您可以利用jQuery的text()
函数:
$('<div>').append('<br />hi').text();
这将创建一个新元素,您可以将标记附加到该元素,然后使用text()
提取文本。有点圆,但它有效。
我建议使用正则表达式解决方案。
答案 7 :(得分:0)
试试这个:
var string = "<br/Hi>".replace(/'/g, '\'').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '\'');
alert(string);
答案 8 :(得分:0)