繁体   English   中英

在字符串中搜索并在出现时引用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM