JavaScript实现按每第二个逗号分割字符串的方法
按每第二个逗号分割字符串为数组的实现方案
给定字符串:
16First,Second,18Third,Fourth,25Fifth,Sixth,38Seven,Eight
需要在每第二个逗号处分割,最终得到数组:
["16First,Second,", "18Third,Fourth,", "25Fifth,Sixth,", "38Seven,Eight"]
以下是两种通用实现方案,适配任意长度的输入字符串:
方案一:正则表达式匹配
利用全局正则匹配,直接提取每两个元素组成的片段:
const inputStr = "16First,Second,18Third,Fourth,25Fifth,Sixth,38Seven,Eight"; // 匹配格式:[非逗号字符],[非逗号字符],后面跟逗号或字符串结尾 const matchRegex = /[^,]*,[^,]*(?:,|$)/g; const resultArray = inputStr.match(matchRegex); console.log(resultArray); // 输出:["16First,Second,", "18Third,Fourth,", "25Fifth,Sixth,", "38Seven,Eight"]
正则说明:
[^,]*:匹配任意数量的非逗号字符[^,]*,[^,]*:匹配两个用逗号分隔的元素(?:,|$):非捕获组,匹配后续的逗号或字符串结尾,确保完整捕获每组g:全局匹配模式,遍历整个字符串提取所有符合规则的片段
方案二:拆分后重组数组
先将字符串按逗号拆分为单个元素数组,再按每两个元素一组重组,同时处理末尾逗号的细节:
const inputStr = "16First,Second,18Third,Fourth,25Fifth,Sixth,38Seven,Eight"; const singleItems = inputStr.split(','); const resultArray = []; for (let i = 0; i < singleItems.length; i += 2) { // 判断是否存在下一个元素 if (i + 1 < singleItems.length) { // 非最后一组:拼接两个元素并添加末尾逗号(最后一组除外) const group = `${singleItems[i]},${singleItems[i+1]}${(i + 2 < singleItems.length) ? ',' : ''}`; resultArray.push(group); } else { // 最后一组只有单个元素:直接添加 resultArray.push(singleItems[i]); } } console.log(resultArray); // 输出:["16First,Second,", "18Third,Fourth,", "25Fifth,Sixth,", "38Seven,Eight"]
这个方案逻辑直观,适合不熟悉正则的场景,同时兼容元素总数为奇数的情况。
内容的提问来源于stack exchange,提问作者Bernard Danken
相关产品推荐
相关产品推荐

