14

我需要拆分关键字字符串并将其转换为逗号分隔的字符串。但是,我需要去掉多余的空格和用户已经输入的任何逗号。

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

输出到这个字符串:

ford,tempo,with,sunroof,

我需要结尾的逗号,并且最终输出中没有空格。

不确定我是否应该使用正则表达式或字符串拆分功能。

有人已经在做这样的事情了吗?

我需要使用 javascript(或 JQ)。

编辑(工作解决方案):

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

//remove all commas; remove preceeding and trailing spaces; replace spaces with comma

str1 = keywordString.replace(/,/g , '').replace(/^\s\s*/, '').replace(/\s\s*$/, '').replace(/[\s,]+/g, ',');


//add a comma at the end
str1 = str1 + ',';

console.log(str1);
4

6 回答 6

34

在这两种情况下,您都需要一个正则表达式。您可以拆分并加入字符串:

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

这会拆分并消耗任何连续的空格和逗号。同样,您可以匹配并替换这些字符:

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

对于尾随逗号,只需附加一个

str = .... + ',';

如果您有前后空格,则应先删除这些空格。

参考: .split , .replace,正则表达式

于 2012-06-26T15:53:05.160 回答
9

ES6中:

var temp = str.split(",").map((item)=>item.trim());
于 2017-03-29T02:03:46.477 回答
6

除了Felix Kling回答

如果您有前后空格,则应先删除这些空格。

String可以通过挂钩到它的原型向 JavaScript 添加“扩展方法” 。我一直在使用以下方法来修剪前后的空格,到目前为止,它的工作是一种享受:

// trims the leading and proceeding white-space
String.prototype.trim = function()
{
    return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
于 2012-06-26T16:06:24.017 回答
1

我会保持简单,只需匹配任何不允许的内容即可加入:

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

这匹配所有间隙,无论中间有什么不允许的字符。为了摆脱开头和结尾的空条目,一个简单的非空值过滤器就可以了。请参阅regex101 的详细说明

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

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

console.info(result);

于 2017-05-27T05:47:35.280 回答
0
let query = "split me by space and remove trailing spaces and store in an array  ";
let words = query.trim().split(" ");
console.log(words)

输出:['split','me','by','space','and','remove','trailing','spaces','and','store','in','an' , '大批' ]

于 2020-07-23T11:09:06.630 回答
-1

如果您只想拆分、修剪加入保留空格,您可以使用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>

于 2016-10-05T08:53:36.890 回答