[英]Search in string and quote around occurrence
使用 Javascript 我需要能够搜索用户输入的字符串并用逗号替换出现的分号。 我遇到的问题是我需要能够在字符串中搜索已经存在的任何逗号,并引用到分号的最后一次和下一次出现。
示例:用户输入为12345;Joran,Michael;02;17;63
应转换为12345,"Joran,Michael",02,17,63
我的包含能够在原始字符串中定位逗号的出现var srch = source.includes(",");
我的替换是var converted = source.replace(/;/g, ",");
效果很好,只需要弄清楚如何到达最后一个/下一个分号来放置引号。
使用 if/else 取决于 if srch 评估为 True -- 如果为真,则添加引号,然后转换字符串的其余部分并返回给用户; 如果为假,则转换并返回。
我确信有一种方法可以用正则表达式来做到这一点,但我还没有想到,所以任何关于看什么的建议都会很棒。
我会分两步完成。 第一场比赛非;
至少有一个,
, 并用引号括起来的字符。 然后全部替换;
结果中的,
:
console.log( '12345;Joran,Michael;02;17;63' .replace(/[^;,]*,[^;]*/g, '"$&"') .replace(/;/g, ',') );
将字符串拆分为;
.split(';')
这给了你一个数组。
将包含','
的元素转换为"${element}"
.map(s => s.includes(',') ? `"${s}"` : s )
将数组转换回字符串
.join(',')
var str = '12345;Joran,Michael;02;17;63';
var arr = str.split(";");
var letters = /^[A-Za-z]/;
var final_str = "";
for (var i = 0; i < arr.length; i++) {
final_str = arr[i].match(letters)?final_str +'"'+ arr[i]+'"'+",":final_str + arr[i]+",";
}
console.log(final_str.substring(0,final_str.length -1));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.