How can I trim the leading and trailing comma in javascript?

Solution 1:

because I believe everything can be solved with regex:

var str = ",liger, unicorn, snipe,"
var trim = str.replace(/(^,)|(,$)/g, "")
// trim now equals 'liger, unicorn, snipe'

Solution 2:

While cobbal's answer is the "best", in my opinion, I want to add one note: Depending on the formatting of your string and purpose of stripping leading and trailing commas, you may also want to watch out for whitespace.

var str = ',liger, unicorn, snipe,';
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');

Of course, with this application, the value of using regex over basic string methods is more obvious.

Solution 3:

If you want to make sure you don't have any trailing commas or whitespace, you might want to use this regex.

var str = ' , , , foo, bar,    ';
str = str.replace(/(^[,\s]+)|([,\s]+$)/g, '');

returns

"foo, bar"

Solution 4:

Try this, since not everything can be solved by REs and even some things that can, shouldn't be :-)

<script type="text/javascript">
    var str = ",liger, unicorn, snipe,";
    if (str.substr(0,1) == ",") {
        str = str.substring(1);
    }
    var len = str.length;
    if (str.substr(len-1,1) == ",") {
        str = str.substring(0,len-1);
    }
    alert (str);
</script> 

Solution 5:

In ECMAScript 5 and above, you can now do a one-liner

',liger, unicorn, snipe,'.split(',').map(e => e.trim()).filter(e => e).join(', ')