I have a string that is like below.
,liger, unicorn, snipe,
how can I trim the leading and trailing comma in javascript?
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'
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.
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"
,,,liger, unicorn, snipe,,,
-> liger, unicorn, snipe
.
Commented
Mar 5, 2017 at 4:35
str.replace(/^[,\s]+|[,\s]+$/g, '').replace(/,[,\s]*,/g, ',');
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>
In ECMAScript 5 and above, you can now do a one-liner
',liger, unicorn, snipe,'.split(',').map(e => e.trim()).filter(e => e).join(', ')