Javascript Split Space Delimited String and Trim Extra Commas and Spaces

纵然是瞬间 提交于 2019-12-04 02:01:11

You will need a regular expression in both cases. You could split and join the string:

str = str.split(/[\s,]+/).join();

This splits on and consumes any consecutive white spaces and commas. Similarly, you could just match and replace these characters:

str = str.replace(/[\s,]+/g, ',');

For the trailing comma, just append one

str = .... + ',';

If you have preceding and trailing white spaces, you should remove those first.

Reference: .split, .replace, Regular Expressions

Richard

In addition to Felix Kling's answer

If you have preceding and trailing white spaces, you should remove those first.

It's possible to add an "extension method" to a JavaScript String by hooking into it's prototype. I've been using the following to trim preceding and trailing white-spaces, and thus far it's worked a treat:

// trims the leading and proceeding white-space
String.prototype.trim = function()
{
    return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
Chaos

In ES6:

var temp = str.split(",").map((item)=>item.trim());

I would keep it simple, and just match anything not allowed instead to join on:

str.split(/[^a-zA-Z-]+/g).filter(v=>v);

This matches all the gaps, no matter what non-allowed characters are in between. To get rid of the empty entry at the beginning and end, a simple filter for non-null values will do. See detailed explanation on regex101.

var str = ", ,, ford,    tempo, with,,, sunroof,, ,";

var result = str.split(/[^a-zA-Z-]+/g).filter(v=>v).join(',');

console.info(result);

If you just want to split, trim and join keeping the whitespaces, you can do this with lodash:

// The string to fix
var stringToFix = "The Wizard of Oz,Casablanca,The Green Mile";

// split, trim and join back without removing all the whitespaces between
var fixedString = _.map(stringToFix.split(','), _.trim).join(' == ');

// output: "The Wizard of Oz == Casablanca == The Green Mile"
console.log(fixedString);
<script src="https://cdn.jsdelivr.net/lodash/4.16.3/lodash.min.js"></script>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!