我需要拆分关键字字符串并将其转换为逗号分隔的字符串。但是,我需要摆脱额外的空格和用户已经输入的任何逗号。
var keywordString = "ford tempo, with,,, sunroof";
输出到此字符串:
ford,tempo,with,sunroof,
我需要尾随逗号,最终输出中没有空格。
不确定我是否应该使用Regex或字符串拆分功能。
任何人都会这样做吗?
我需要使用javascript(或JQ)。
EDIT(工作解决方案):
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);
答案 0 :(得分:32)
在这两种情况下,您都需要一个正则表达式。您可以拆分并加入字符串:
str = str.split(/[\s,]+/).join();
这会分裂并消耗任何连续的空格和逗号。同样,您可以匹配并替换这些字符:
str = str.replace(/[\s,]+/g, ',');
对于尾随逗号,只需附加一个
str = .... + ',';
如果你有前面和后面的空格,你应该先删除它们。
答案 1 :(得分:6)
如果您有前面和后面的空格,则应删除 那些是第一个。
可以通过挂钩原型来为JavaScript String
添加“扩展方法”。我一直在使用以下内容来修剪前面和后面的空格,到目前为止,这是一种享受:
// trims the leading and proceeding white-space
String.prototype.trim = function()
{
return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
答案 2 :(得分:5)
在 ES6 :
中var temp = str.split(",").map((item)=>item.trim());
答案 3 :(得分:0)
我会保持简单,只需匹配任何而非允许加入的内容:
bypass_through
这可以匹配所有间隙,无论中间有哪些不允许的字符。要删除开头和结尾的空条目,可以使用非空值的简单过滤器。请参阅detailed explanation on regex101。
str.split(/[^a-zA-Z-]+/g).filter(v=>v);

答案 4 :(得分:0)
let query = "split me by space and remove trailing spaces and store in an array ";
let words = query.trim().split(" ");
console.log(words)
输出: [ '分割','我','按','空格','和','删除','尾随','空格','和','存储','在','一个','数组' ]
答案 5 :(得分:-1)
如果您只想拆分,修剪和加入保留空白,可以使用 lodash 执行此操作:
"msg": "C:\Log\1.txt"
// 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);