将 .txt 文件拆分为 Javascript 中的数组

Splitting a .txt file into an array in Javascript

所以我有一个包含多行信息的文本文件,每行有几个数据片段,我需要将它们存储在一个数组中。

当它们以白色 space 或逗号分隔时,这很简单,但是对于这个特定文件,一些数据在单个数据字段中有白色 space。

例如

123 4325 你好世界 43

394 3892 你好吗 23

有人知道如何将每行分成 4 个字符串,同时 'Hello World' 和 'How are you' 保持在一起吗?

即:Array[0] = [123, 4325, Hello World, 43] 和 Array[1] = [394, 3892, How are you, 23]

抱歉,我对 JS 还很陌生,所以我不确定是否有一个真正简单的答案在眼前。

谢谢

您可以使用 JavaScript API 称为 FileReader。 您可以在 Google 中搜索它。 它可以只使用 JS 读取文件。 然后你可以使用

var lines = content.split("\n");

要用新行分隔内容。

遵循类似的工作流程。

  1. 选择一条线,按 space 分割。

例如"345 578 这是文本 585" -> ["345","578","This", "is", "a", "text","585"]

  1. 取前两个元素为数组

例如["345","578","This", "is", "a", "text","585"] -> ["345","578"] ["This", "is", "a", "text","585"]

  1. 将最后一个元素移到一个单独的数组中。

例如["345","578"] ["This", "is", "a", "text"] ["585"]

  1. 将中间数组与space合并。

例如["345","578"] ["This is a text"] ["585"]

  1. 合并所有数组。

例如["345","578", "This is a text", "585"]

田田!

虽然不复杂,但你想要的也不是javascript盒子里出来的。这意味着有数百种方法可以解决这个问题。我建议您根据 "soft" 要求进行选择。

代码需要多快?理解代码应该有多容易?您是否还需要确定每个值的格式(即第一个值是数字,第三个是字符串)?

如果您需要检查格式(我发现大部分时间都是这样),我建议使用正则表达式。有很多例子,这对 SO 来说是一个不同的问题。

作为您在此处提到的特定问题的解决方案,这是我更喜欢的解决方案:

function breakByPosition(str, positions) {
    var start = 0;
    var result = [];
    while (positions.length) {
        // splice returns the removed values as an array
        // It also modified the source array in place
        var position = positions.splice(0, 1);
        var substring = str.substring(start, position);
        // The OP wants by position but apparently not the spaces
        // Could be replaced by if (substring !== ' ') depending on needs
        if (substring.trim() !== '') {
            result.push(substring);
        }
        start = position;
    }
    return result;
}

breakByPosition('123 4325 Hello World 43', [3, 4, 8, 9, 20, 21, 23]);

这个returns:

["123", "4325", "Hello World", "43"]