如何替换所有<;br/>;使用jQuery时使用\r\n
我正在使用将表保存为CSV(我对其进行了一些修改,以包含标题并排除隐藏行)。表格单元格中的某些换行符丢失,但我希望将其保留为\r\n。网上有很多类似的问题,但我仍然觉得jQuery有点神秘,不知怎的,我还没能找到这个希望很简单的问题的解决方案如何替换所有<;br/>;使用jQuery时使用\r\n,jquery,Jquery,我正在使用将表保存为CSV(我对其进行了一些修改,以包含标题并排除隐藏行)。表格单元格中的某些换行符丢失,但我希望将其保留为\r\n。网上有很多类似的问题,但我仍然觉得jQuery有点神秘,不知怎的,我还没能找到这个希望很简单的问题的解决方案 function exportTableToCSV($table, delimiter) { var $rows = $table.find('tr:visible'); // Temporary delimiter character
function exportTableToCSV($table, delimiter) {
var $rows = $table.find('tr:visible');
// Temporary delimiter characters unlikely to be typed by keyboard
// This is to avoid accidentally splitting the actual contents
var tmpColDelim = String.fromCharCode(11), // vertical tab character
tmpRowDelim = String.fromCharCode(0), // null character
// actual delimiter characters for CSV format
colDelim = '"' + delimiter + '"',
rowDelim = '"\r\n"',
// Grab text from table into CSV formatted string
csv = '"' + $rows.map(function (i, row) {
var $row = $(row),
$cols = $row.find('td, th');
return $cols.map(function (j, col) {
var $col = $(col),
text = $col.text();
return text.replace(/"/g, '""'); // escape double quotes
}).get().join(tmpColDelim);
}).get().join(tmpRowDelim)
.split(tmpRowDelim).join(rowDelim)
.split(tmpColDelim).join(colDelim) + '"',
// Data URI
csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);
return csvData;
}
这就是
br
元素被剥离的地方:
var $col = $(col),
text = $col.text();
一种解决方案是用标记替换它们,然后用\r\n
替换标记:
var $col, text;
$col = $(col).clone();
$col.find("br").replaceWith("<div>{{MARKER}}</div>");
text = $col.text().replace(/{{MARKER}}/g, "\r\n");
表格{
边界塌陷:塌陷;
边框:1px纯黑;
}
运输署{
边框:1px纯黑;
}
测试
一个
二加三
jQuery没有这样的字符串处理函数。您应该只使用普通的JavascriptString.prototype.replace()
method.BTW,text.replace(“,”)
将只替换第一个引号,而不是全部引号。您必须使用带有g
修饰符的正则表达式来执行多个替换。谢谢,我已经更正了。@TomasoAlbinoni:啊,我不知道您没有
——我已经更新了答案。