首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从纯文本表中获取html表

如何从纯文本表中获取html表
EN

Stack Overflow用户
提问于 2017-08-21 06:47:51
回答 2查看 1.3K关注 0票数 0

我有一些数据存储在纯文本文件中。它使用空格分隔不同的列,但是在不同的表中,列有不同的宽度(不同的字符数)。表数据的内容包括单词、整数、浮点数和范围。

提取javascript中的数据并将其转换为html表是一种简单的方法吗?我更喜欢一种可以用于所有表的通用方法(这意味着它必须自己检测一个新列的位置-固定索引是不可能的,因为正如前面提到的那样,它们每个文件都不同)。

下面是一个示例,其中一个纯文本表是这样的:

代码语言:javascript
复制
Line1    23     45.4     12 - 14
Line2    4      5.9      < 8
Line3    13.56  105.34   20.37 - 130.20
Line4    7.2    14.2     10.1 - 14.0
...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-21 09:49:20

我认为这家伙here有正确的解决方案给你。

他正在根据空格划分他的台词。

因此,一旦您在数组中获得数据,您就可以简单地遍历数组并将字符串附加到html标记中,从而形成一个html表。您可以在peeto的答案中引用displayHtml()方法。

告诉我你需要进一步的帮助。

编辑 **

因此,根据您提供的示例数据,我假设有两个或更多的空间来更改为一个新列。如果这是您可以在下面尝试我的代码的方式。

代码语言:javascript
复制
var data = `23     45.4     12 - 14
4      5.9      < 8
13.56  105.34   20.37 - 130.20
7.2    14.2     10.1 - 14.0`;

data = data.split(/\r?\n/); // split text into lines

var lines = [];
for (var i = 0; i < data.length; i++) {
  data[i] = data[i].trim();
  lines.push(data[i].split(/[ ][ ]+/)); // split lines further based on 2 or more spaces
}
// creating html string
var htmlStr = '<table id=\'myTable\'>';
for (var i = 0; i < lines.length; i++) {
  htmlStr += '<tr>';
  for (var j = 0; j < lines[i].length; j++) {
    htmlStr += '<td>' + lines[i][j] + '</td>';
  }
  htmlStr += '</tr>';
}
htmlStr += '</table>';

document.getElementById('myDiv').innerHTML = htmlStr; // append string wherever you like

希望这能帮到你。但是,如果仍然没有,那么您确实需要仔细查看所有的文件,并在所遵循的模式上找到它们之间的至少一个相似之处来更改列。

票数 0
EN

Stack Overflow用户

发布于 2017-08-21 07:54:33

这适用于您的数据:

代码语言:javascript
复制
function readTextFile(file)
{
    var rawFile = new XMLHttpRequest();
    var allText = '';
    rawFile.open('GET', file, false);
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status == 0)
            {
                allText = rawFile.responseText;
            }
        }
    }
    rawFile.send(null);
    return allText;
}

function returnColumns(file)
{
    var allText = readTextFile(file);
    var lines = allText.split('\n');
    var data = [];
    for(var i = 0; i < lines.length; i++)
    {
        if (lines[i] != '')
        {
            data[i] = [lines[i].slice(0, 9), lines[i].slice(10, 16), lines[i].slice(17, 25), lines[i].slice(26) ];
        }
    }
    return data;
}

function displayHtml()
{
    var data = returnColumns('data.txt');
    var html = '<table border="3">';
    for (var r = 0; r < data.length; r++)
    {
        html += '<tr>';
        for (var c = 0; c < data[r].length; c++)
        {
            html += '<td>' + data[r][c] + '</td>';
        }
        html += '</tr>';
    }
    html += '</table>';
    document.getElementById('content').innerHTML = html;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45790819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档