javascript split方法仅返回用逗号分隔的值,而不是逗号中的引号[closed]

z2acfund  于 2023-02-21  发布在  Java
关注(0)|答案(2)|浏览(133)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

2天前关闭。
Improve this question
我想用默认的逗号,分割下面的字符串,并忽略","部分。
有没有人想出解决这个问题的办法?尝试了很多解决办法,但都不起作用。
我的字串:(testing","a framework), hello world, testing","antother_framework
预期结果:一米三米一]

q3qa4bjr

q3qa4bjr1#

这不是最好的方法,使用regex您可以对替换进行分组,但它可以工作

const str = '(testing","a framework), hello world, testing","antother_framework';

let arr = str.split(',');
console.log(arr);
for (let i = 0; i < arr.length; i++) {
  arr[i] = arr[i].replaceAll('(', '');
  arr[i] = arr[i].replaceAll(')', '');
  arr[i] = arr[i].replaceAll('\"', '');
  arr[i] = arr[i].trim();
}
console.log(arr);
cngwdvgl

cngwdvgl2#

您可以使用此函数:

function splitByCommas(str) {
    return str.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/);
}

说明:
1./,(?=(?:[^"]"[^"]")[^"]$)/-〉匹配引号外的逗号
1.(?:[^"]"[^"]")-〉匹配引号和引号内的文本
1.[^"]
$-〉匹配最后一个引号后的剩余文本
如果按如下方式运行函数:

console.log(splitByCommas('(testing","a framework), hello world, testing","antother_framework'));

它将给出以下输出:

[
  '(testing","a framework)',
  ' hello world',
  ' testing","antother_framework'
]
    • 如果您还想删除空格,可以使用以下命令**:
function splitByCommas(str) {
    return str.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/).map(function (item) {
            return item.trim();
        }
    );
}

对于相同的输入,您可以:

[
  '(testing","a framework)',
  'hello world',
  'testing","antother_framework'
]

相关问题