为了账号安全,请及时绑定邮箱和手机立即绑定

js修改拼接字符串为特定格式

js修改拼接字符串为特定格式

白衣染霜花 2018-08-27 16:34:12
现在有一个URL需要拼成白班:2:3:5,夜班:3:4:6这种格式,是动态增删生成的,这是两行数据,每行中间用逗号分隔,直接取的表单里面的值。但是我用$("#form1").serialize()只能得到a=白班&b=2&c=3&d=5&a=夜班&b=3&c=4&d=6这种样子的数据。请问有什么办法能变成上面需要的样子吗?<form id="form1">     <label>工作种类:</label>     <select name="a">         <option>白班</option>         <option>夜班</option>     </select>     <input type="text" name="b" value="2">     <input type="text" name="c" value="3">     <input type="text" name="d" value="5"></form>我的想法是替换&符号然后拆开,删掉每个部分的前两个字符,最后再重新拼起来,但是怎么也拼不出来:var cc=$("#form1").serialize();//针对多行的时候cc='a=白班&b=2&c=3&d=5&a=夜班&b=3&c=4&d=6';var dd=cc.replace(/=/g,""); //去掉等于号var bbb=dd.split(":");//从冒号开始拆分for(var i in bbb) {//往下就出错了     var ccc=bbb[i];    var ddd=ccc.slice(2);    var str="";     console.log(str.concat(ddd)); };有人推荐用正则,但是正则对于多行的时候好像就没有办法很好的拼接了,我的name是可以为a-z的字母的,最后在拼出来的url里面是不需要name的。
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

其实正则是最优解。

2333,手动滑稽。

var a="a=白班&b=2&c=3&d=5";
a.replace(/(\&?)(\w*\=)/g, (a, b) => { return b ? ':' : '' });

更新
应题主的要求

var a="a=白班&b=2&c=3&d=5&a=夜班&b=2&c=3&d=5";
a.replace(/(\&?)(\w*\=)([\w|\u4e00-\u9fa5]*)/g, (a, b, c, d) => {  if (d === '夜班') return ',' + d;  return (b ? ':' : '') + d
});


查看完整回答
反对 回复 2018-10-30
  • 1 回答
  • 0 关注
  • 669 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信