如何在javascript中修剪前导和尾随逗号?

san*_*anu 60 javascript

我有一个字符串,如下所示.

,liger, unicorn, snipe,
Run Code Online (Sandbox Code Playgroud)

如何在javascript中修剪前导和尾随逗号?

cob*_*bal 141

因为我相信一切都可以用正则表达式来解决:

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

  • 对于@mohitmun(以及任何其他人)."有些人在遇到问题时会想:"我知道,我会使用正则表达式." 现在他们有两个问题.更多信息:https://blog.codinghorror.com/regular-expressions-now-you-have-two-problems/ (8认同)

eye*_*ess 35

虽然cobbal的答案是"最好的",但在我看来,我想添加一个注释:根据字符串的格式以及剥离前导和尾随逗号的目的,您可能还需要注意空格.

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

当然,对于这个应用程序,使用正则表达式而不是基本字符串方法的价值更为明显.

  • 添加空格对我来说是关键。 (2认同)

her*_*ist 22

如果要确保没有任何尾随逗号或空格,可能需要使用此正则表达式.

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

回报

"foo, bar"
Run Code Online (Sandbox Code Playgroud)

  • 它不会取代 snipe 之后的逗号。这更好 `str.replace(/^[,\s]+|[,\s]+$/g, '').replace(/,[,\s]*,/g, ','); ` (2认同)

pax*_*blo 17

尝试这一点,因为RE 并不是所有东西都可以解决,甚至可以,不应该是:-)

<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> 
Run Code Online (Sandbox Code Playgroud)

  • 不要问RE可以为你做什么,但你可以为RE做些什么!:) (4认同)

小智 7

在 ECMAScript 5 及更高版本中,您现在可以执行单行

',liger, unicorn, snipe,'.split(',').map(e => e.trim()).filter(e => e).join(', ')
Run Code Online (Sandbox Code Playgroud)