I use substr()
on a string to output a set of characters from a message. My problem is that if the string contains HTML I would get the tags in the text.
Is it possible to parse the HTML before using substr()
to only extract the text from the message itself?
Example 1:
var string = "Hi";
alert(string.substr(0, 7));
Alert:
Hi
Example 2:
var string = "<br/>Hi";
alert(string.substr(0, 7));
Alert:
<br/>Hi
I use substr()
on a string to output a set of characters from a message. My problem is that if the string contains HTML I would get the tags in the text.
Is it possible to parse the HTML before using substr()
to only extract the text from the message itself?
Example 1:
var string = "Hi";
alert(string.substr(0, 7));
Alert:
Hi
Example 2:
var string = "<br/>Hi";
alert(string.substr(0, 7));
Alert:
Share Improve this question edited Jun 20, 2020 at 9:12 CommunityBot 11 silver badge asked Jan 8, 2014 at 16:53 Sam PetterssonSam Pettersson 3,2276 gold badges24 silver badges38 bronze badges 2
<br/>Hi
-
How does
string
get populated? You could do something like$(string).text()
, but there's probably a much more efficient way that doesn't involvejQuery
. – crush Commented Jan 8, 2014 at 16:55 - 1 Have a look at the accepted answer to this question: stackoverflow./questions/10585029/… – richsilv Commented Jan 8, 2014 at 16:56
9 Answers
Reset to default 4Using jQuery.text()
method, you can extract only the 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.
You can remove the html via a regex, see the answer here and you can do something like this:
String.prototype.removeHtml=function(){
return this.replace(/(<([^>]+)>)/ig,"");
}
var string = "<br/>Hi";
alert(string.removeHtml().substr(0, 7));
Fiddle: http://jsfiddle/fx3MJ/
Remove HTML Tags in Javascript with Regex
Yes using this:
var string = "<br/>Hi";
var stringStripped = string.replace(/(<([^>]+)>)/ig,"");
alert(stringStripped);
http://jsfiddle/hutchonoid/7T56N/
You could replace html-tag with regex pattern
var string = string.replaceAll("<[^>]*>", "");
If you input is read in the DOM, you can use jQuery to get just the text. Example :
<p id="foo"><br />Hi</p>
var string = $('#foo').text();
alert(string.substr(0, 7)); //says "Hi"
See jQuery doc for reference.
Edit: If your input es from somewhere else, you can still use jQuery, but there may be better solution.
var input = "<br />Hi";
var fakeElement = $('<div>' + input + '</div>');
var string = fakeElement.text();
alert(string.substr(0, 7)); //says "Hi"
If you want to get the text with HTML tag, try to use .innerHTML from jQuery.
<p id="foo"><br />Hi</p>
$("#foo")[0].innerHTML;
Console: "<br />Hi"
You could leverage jQuery's text()
function:
$('<div>').append('<br />hi').text();
This creates a new element, to which you can append your markup, and then use text()
to extract the text. A little round-about, but it works.
I'd remend a regex solution over this.
try this:
var string = "<br/Hi>".replace(/'/g, '\'').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '\'');
alert(string);
Try this
var string = "<br/>Hi";
alert($('<span>'+string+'</span>').text().substr(0, 7));
FIDDLE