priyanka.sarkar
priyanka.sarkar

Reputation: 26518

What will be the efficient way to Replace characters from within braces?

I have the below input

var input = (a-d){12-16},(M-Z){5-8},[@$%!^,12+-,23^!] 

I need to remove the comma within the square brackets such that the final output will be

var output = (a-d){12-16},(M-Z){5-8},[@$%!^12+-23^!] 

By solution

function test()
{
    var input = '(a-d){12-16},(M-Z){5-8},[@$%!^,12+-,23^!]'; //input string
    var splitByFirstBracket = input.split("["); //split the input by [ character    

    //merge the arrays where the second array is replaced by '' for ','
    var output = splitByFirstBracket[0] + '[' + splitByFirstBracket[1].replace(/,/g,'');    
    alert(output);
}

It is providing the output correctly. Is there any better way - I am open both for JavaScript and jQuery.

Upvotes: 0

Views: 23

Answers (1)

Barmar
Barmar

Reputation: 781626

You can use a regular expression replacement. The replacement can be a function, which receives the part of the input that was matched by the regexp, and then it can calculate the replacement. In this case, it would use another replace call to remove the commas.

var input = '(a-d){12-16},(M-Z){5-8},[@$%!^,12+-,23^!]'; //input string
var output = input.replace(/\[.*?\]/g, function(match) {
  return match.replace(/,/g, '');
});
console.log(output);

Upvotes: 3

Related Questions