如何在JS中用逗号分隔的双引号包装两个字符串



我对编码很陌生。我在解决以下问题时遇到问题:取一个数据块,例如:

1963;john, doe;Williwanka,tp;jane;4200;1300;19.63;-42

并潜入类似的东西

1963,"john, doe","Williwanka,tp",jane,4200,1300,19.63,-42

我知道我可以使用CCD_ 1和CCD_"并添加双引号。

let text = "00077;Jessica;Williamsburg,ky;40769;42;42;42;42";
var myArray = text.split(";");
var newText = "";
for (var i = 0; i <= myArray.length; i++) {
if (myArray.indexOf(i) == ",") {
let newText = '"' + fruits.join('","') + '"';
} else {
newText += text.index(i);
}
}
return newText

用分号分隔,然后检查每个部分是否包含逗号。如果是,请用引号括起来,否则不要更改。然后将结果连接到字符串中。

const text = "1963;john, doe;Williwanka,tp;jane;4200;1300;19.63;-42";
const parts = text.split(";");
const result = parts.map((p) => p.includes(",") ? `"${p}"` : p).join(",");
console.log(result);

如果无法将第一个捕获组解析为数字,则可以使用正则表达式/([^;]+)(?:;|$)/并将其替换为"

const input = "1963;john, doe;Williwanka,tp;jane;4200;1300;19.63;-42",
replacer = (_, p1) => isNaN(p1) ? `"${p1}",` : `${p1},`,
output = input.replace(/([^;]+)(?:;|$)/g, replacer).slice(0, -1);
console.log(output)

虽然前面的答案是正确的,但对于新手程序员来说,可能很难理解它们是如何工作的。

请允许我修复。在下面给你另一个答案,它基于一个简单的循环,就像OP的原始代码一样。

let text = "00077;Jessica;Williamsburg,ky;40769;42;42;42;42";
var partsArray = text.split(";");
var newText = "";

for (var i = 0; i < partsArray.length; i++) {
let onePart = partsArray[i];
if (onePart.includes(",")) {
newText += `"${onePart}"`;
} else {
newText += onePart;
}
newText += ",";
}
console.log(newText);

最新更新