使用换行符和标签

时间:2016-03-30 14:12:09

标签: javascript jquery regex replace

我有HTML表格结构。我需要将<tr>替换为/n,将<td>替换为&#39; / t&#39;使用正则表达式。我所做的如下:

var dataval = [].slice.call($("#printdiv").find("table tr")).map(function(row){
    var a = row.textContent.trim().replace(/td/gi,"\t");
    return a;
}).join("\r\n");

部分工作但tab不在<td>之间。

1 个答案:

答案 0 :(得分:2)

Firstly, never use RegEx to parse HTML。其次,您可以通过构建表示表中所有trtd元素的二维数组来实现此目的,如下所示:

var tableData = $('table tr').map(function() {
    return [$(this).find('td').map(function() {
        return $(this).text();
    }).get()];
}).get();

请注意,第二个map()调用的返回值需要放在另一个数组中,因为jQuery会在map()的响应中烦恼地展平第一个子数组。

从那里你可以构建一个字符串,每个单元格用一个制表符分隔,每一行都有一个新行。像这样:

var output = '';
$.each(tableData, function(i, row) {
    $.each(row, function(i, cell) {
        output += cell + '\t';
    })
    output += '\n';
})

Working example