我对编码很陌生。我在解决以下问题时遇到问题:取一个数据块,例如:
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);