Skip to content Skip to sidebar Skip to footer

Remove All Instances Of A Character In A String With Something Else Javascript

I need to replace all
with a space. The below is the string that gets spitted out dynamically and i need to hide the br tags... M,W,Th,F 7:30 AM - 4:00 PM
T

Solution 1:

There are three issues with your code:

  1. $('.WorkingHours').text() won't contain any HTML (so no br tags either), it only returns the text content of elements.
    $('.WorkingHours').text() returns:

    M,W,Th,F 7:30 AM - 4:00 PMTu 7:30 AM - 6:00 PM

    whereas $('.WorkingHours').html() returns:

    M,W,Th,F 7:30 AM - 4:00 PM<br>Tu 7:30 AM - 6:00 PM<br>

  2. You have to escape the inner backslash in your expression. Edit: Having a look at the output of .html() it actually does not contain <br /> but <br>. This might depend on the doctype of the document (not working example, working example).

  3. You have to assign the value back to the element.

You might be able to do

$('.WorkingHours').html(function(i, html) {
    return html.replace(/<br\s*\/?>/g, " "); 
});

but it would be much cleaner to not use regular expressions at all:

$('.WorkingHours').find('br').replaceWith(' ');

This finds all br element nodes and replaces them with a text node containing only a space.

DEMO

Update (in response to one of your comments): If you want to replace the last br with a full stop, you can use .last():

$('.WorkingHours')
 .find('br').last().replaceWith('.')
 .end().replaceWith(' ');

DEMO


Solution 2:

Couple things:

use html() to get the HTML of the node:

var rawHTML = $('.WorkingHours').html();

Use \ to escape the / within your regex:

/<br \/>/g

Set the HTML to the return value of the replace function:

$('.WorkingHours').html(rawHTML.replace(/<br \/>/g, ' ');

End Product:

var rawHTML = $('.WorkingHours').html();
$('.WorkingHours').html(rawHTML.replace(/<br \/>/g, ' ');

Solution 3:

using .text() instead of .html() to remove html tags

.text() only returns the inner text, instead of the inner html.


Solution 4:

I think you need to escape the forward-slash in the expression, e.g.

$('.WorkingHours').text().replace(/<br \/>/g, " "); 

Solution 5:

You need to escape the forward slash in the <br />:

$('.WorkingHours').text().replace(/<br \/>/g, " "); 

http://jsfiddle.net/uLYrH/1


Post a Comment for "Remove All Instances Of A Character In A String With Something Else Javascript"