Javascript正则表达式:清除CSV
我有一个对象属性值的CSV,我需要从中删除所有空值Javascript正则表达式:清除CSV,javascript,regex,csv,Javascript,Regex,Csv,我有一个对象属性值的CSV,我需要从中删除所有空值 var myObj = { a: "", b: "", c: "c", d: "" }; var result = Object.values(myObj).join(","); console.log("result before: " + result); // result before: ,,c, result = result.replace(/(^\,)|(\,$)|\,\,/, ""); console.log("result
var myObj = { a: "", b: "", c: "c", d: "" };
var result = Object.values(myObj).join(",");
console.log("result before: " + result); // result before: ,,c,
result = result.replace(/(^\,)|(\,$)|\,\,/, "");
console.log("result after: " + result); // result after: ,c,
正如您所看到的,自定义“trip(,)”的正则表达式工作得不太好,错误在哪里
我需要删除所有“,”和修剪结束(,)+修剪开始(,)
PS.
A) 一种解决方案是过滤对象B) 另一个解决方案是修复正则表达式 如果我理解了这个问题,那就是我的解决方案:
const obj={a:'a',b:'c:'d:'d'}
const res=对象键(obj)
.reduce((c,e)=>obj[e]?[…c,obj[e]]:c,[])
.join(“,”)
console.log(res)
如果我理解了这个问题,那将是我的解决方案:
const obj={a:'a',b:'c:'d:'d'}
const res=对象键(obj)
.reduce((c,e)=>obj[e]?[…c,obj[e]]:c,[])
.join(“,”)
log(res)
不要使用正则表达式解决方案,只连接定义的元素
var myObj = { a: "", b: "", c: "c", d: "" };
var result = Object.values(myObj).filter(function(o){
return o;
}).join(",");
console.log("result before: " + result);
正则表达式解
var myObj = { a: "", b: "", c: "c", d: "" };
var result = Object.values(myObj).join(",");
console.log("result before: " + result); // result before: ,,c,
result = result.replace(/(^\,+)|(\,+$)|(?!\,[^,])(\,|\,\,+)/g, "");
console.log("result after: " + result); // result after: c
工作原理
(^\,+)匹配字符串开头的任意数量的逗号
|(\,+$)或结尾的任何数字
|(?!\,[^,])(\,|\,\,+)或后跟其他字符的单个或多个逗号
不要使用正则表达式解决方案,只连接已定义的元素
var myObj = { a: "", b: "", c: "c", d: "" };
var result = Object.values(myObj).filter(function(o){
return o;
}).join(",");
console.log("result before: " + result);
正则表达式解
var myObj = { a: "", b: "", c: "c", d: "" };
var result = Object.values(myObj).join(",");
console.log("result before: " + result); // result before: ,,c,
result = result.replace(/(^\,+)|(\,+$)|(?!\,[^,])(\,|\,\,+)/g, "");
console.log("result after: " + result); // result after: c
工作原理
(^\,+)匹配字符串开头的任意数量的逗号
|(\,+$)或结尾的任何数字
|(?!\,[^,])(\,|\,\,+)或后跟其他字符的单个或多个逗号
为什么不在第2行中过滤数组
var result = Object.values(myObj).filter(function (x) {return x!="";}).join(",");
为什么不在第2行过滤数组呢
var result = Object.values(myObj).filter(function (x) {return x!="";}).join(",");
所以你想在最后加上
c
?或者{c:“c”}
?是的,删除所有空值。您想要的输出对象的键具有非空值,对吗?是的,只有非空值。您想要的只是c
?或者{c:“c”}
?是的,删除您想要的输出对象中的所有空值,并且键具有非空值,对吗?是的,只有非空值创建解决方案!我想知道正则表达式中的问题是什么:)我添加了一个正则表达式解决方案。很好的解决方案!然而,我想知道正则表达式中的问题是什么:)我添加了一个正则表达式解决方案。