在 javascript 中出现的前两个逗号处拆分字符串
Split a string at the first two commas occuring in javascript
让我们考虑定义为 :
的变量 str
var str = "A, B, C, D, E, F"
要在逗号处拆分字符串,我会这样做:
str = str.split(",")
console.log(str)
// => ["A", "B", "C", "D", "E", "F"]
所以,如果我必须在前两个逗号处拆分它,我应该怎么做,这样输出就变成了:
// => ["A", "B", "C, D, E, F"]
您可以使用正则表达式匹配第一个非逗号部分,然后是第二个非逗号部分,然后是其他任何内容(字符串的其余部分):
var str = "A, B, C, D, E, F";
const [, ...matches] = str.match(/(\w+), (\w+), (.+)/);
console.log(matches);
您也可以使用 split
和负向后看,但并非所有地方都支持负向后看(并且在极少数环境中支持可变长度向后看):
var str = "A, B, C, D, E, F";
console.log(
str.split(/(?<=^[^,]+(?:,[^,]+)?), /)
);
您可以拆分字符串,保留拆分分隔符并构建一个新的部分数组和连接部分。
function split(string, limit) {
var parts = string.split(/(,\s*)/),
result = [],
i = 0;
while (i < limit * 2) {
result.push(parts[i]);
i += 2;
}
result.push(parts.slice(limit * 2).join(''));
return result;
}
console.log(split('A, B, C, D, E, F, G', 2));
你可以试试这个,它会return你需要的结果
-var yourString="A, B, C, D, E, F";
-var formattedString = yourString.split(",").join("\n");
可以这样使用split
和reduce
来完成:
const str = 'A, B, C, D, E, F';
const res = str
.split(', ')
.reduce((strs, str) => {
// get three parts of an array
let [partOne, partTwo, partThree] = strs;
// if the first two parts isn't fill out
if (!partTwo) {
return [...strs, str];
} else {
// fill out the third part,
// which can be 'undefined' at start.
// if it is not 'undefined',
// concatenate the string
return partThree ? [partOne, partTwo, `${partThree}, ${str}`] : [...strs, str];
}
}, [])
console.log(res);
让我们考虑定义为 :
的变量 strvar str = "A, B, C, D, E, F"
要在逗号处拆分字符串,我会这样做:
str = str.split(",")
console.log(str)
// => ["A", "B", "C", "D", "E", "F"]
所以,如果我必须在前两个逗号处拆分它,我应该怎么做,这样输出就变成了:
// => ["A", "B", "C, D, E, F"]
您可以使用正则表达式匹配第一个非逗号部分,然后是第二个非逗号部分,然后是其他任何内容(字符串的其余部分):
var str = "A, B, C, D, E, F";
const [, ...matches] = str.match(/(\w+), (\w+), (.+)/);
console.log(matches);
您也可以使用 split
和负向后看,但并非所有地方都支持负向后看(并且在极少数环境中支持可变长度向后看):
var str = "A, B, C, D, E, F";
console.log(
str.split(/(?<=^[^,]+(?:,[^,]+)?), /)
);
您可以拆分字符串,保留拆分分隔符并构建一个新的部分数组和连接部分。
function split(string, limit) {
var parts = string.split(/(,\s*)/),
result = [],
i = 0;
while (i < limit * 2) {
result.push(parts[i]);
i += 2;
}
result.push(parts.slice(limit * 2).join(''));
return result;
}
console.log(split('A, B, C, D, E, F, G', 2));
你可以试试这个,它会return你需要的结果
-var yourString="A, B, C, D, E, F";
-var formattedString = yourString.split(",").join("\n");
可以这样使用split
和reduce
来完成:
const str = 'A, B, C, D, E, F';
const res = str
.split(', ')
.reduce((strs, str) => {
// get three parts of an array
let [partOne, partTwo, partThree] = strs;
// if the first two parts isn't fill out
if (!partTwo) {
return [...strs, str];
} else {
// fill out the third part,
// which can be 'undefined' at start.
// if it is not 'undefined',
// concatenate the string
return partThree ? [partOne, partTwo, `${partThree}, ${str}`] : [...strs, str];
}
}, [])
console.log(res);