我正在使用.NET 8.0。
我正在使用 javascript 将网格导出到 CSV 文件...
网格的一列具有该值
AAA;BBB;CCC
当我导出到 CSV 时,我需要包含该值的单元格出现在同一单元格中的另一个单元格的下面,就像这样
Column1 Name Value
1 apple AAA
BBB
CCC
2 orange DDD
我在JS中有这个功能
function GenerateCSV(table_id, name) {
// Select rows from table_id
var rows = document.querySelectorAll('table#' + table_id + ' tr');
// Construct csv
var csv = [];
for (var i = 0; i < rows.length; i++) {
var row = [], cols = rows[i].querySelectorAll('td, th');
for (var j = 0; j < cols.length; j++) {
// Clean innertext to remove multiple spaces and jumpline (break csv)
var data = cols[j].innerText.replace(/(\s\s)/gm, ' ').replace(";", "\r\n")
row.push('"' + data + '"');
}
csv.push(row.join(','));
}
var csv_string = csv.join('\n');
var filename = name + '.csv';
var link = document.createElement('a');
link.style.display = 'none';
link.setAttribute('target', '_blank');
link.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(csv_string));
link.setAttribute('download', filename);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
在这一行
var data = cols[j].innerText.replace(/(\s\s)/gm, ' ').replace(";", "\r\n")
我正在替换“;”为了 ” ”
它成功了一半..它只是替换第一个字符
";"
而不是替换所有";"
显示
Column1 Name Value
1 apple AAA
BBB;CCC
如何进行全线更换?
谢谢
只需将其替换为全局正则表达式搜索:
var data = cols[j].innerText.replace(/(\s\s)/gm, ' ').replace(/;/g, "\r\n")
请注意
\s\s
的含义,但将其保留在那里以防万一(我不知道数据的格式)