Имеет go с этим
Допущения:
- Данные представляют собой одну строку
\n
- разделитель строк |
можно игнорировать ,
- разделитель ячеек - Первое «слово» в строке - это заголовок
const lines = `B20P: [[B20P1]], [[B20P2]], [[B20P3]], [[B20P4]], [[B20P5]], [[B20P6]], [[B20P7]], [[B20P8]], [[B20P9]], [[B20P10]] |
W20P: [[W20P1]], [[W20P2]], [[W20P3]], [[W20P4]], [[W20P5]], [[W20P6]], [[W20P7]], [[W20P8]], [[W20P9]], [[W20P10]] |`.replace(/ \|/g,"").split("\n");
const thead = [], tbody = [];
const cols = lines.length;
lines.forEach((line,i) => {
const cells = line.split(' ');
thead[i] = `<th>${cells[0]}</th>`;
cells.slice(1).forEach((cell,j) => {
if (!tbody[j]) tbody[j]='<tr>';
tbody[j] += `<td>${cell.replace(",","")}</td>`
if (i+1%cols === 0) tbody[j] += '</tr>';
})
})
document.body.innerHTML = `<table><thead><tr>${thead.join("")}</tr></thead><tbody>${tbody.join("")}</tbody></table>`;
table tr td,th {
border-spacing: 0px;
border-collapse: separate;
border: 1px solid black;
text-align:center;
}
table tr {
background-color: #E0E0E0;
}
table tr:nth-child(even) {
background-color: #F1F1F1;
}
td {
min-width: 100px;
}