通过JavaScript中的换行符和制表符拆分文本文件

时间:2017-12-18 21:33:09

标签: javascript jquery arrays

我正在加载像这样的文本文件......

Cue         Target      Info      Group
CONTACTS    FRIENDS     genuine   Group1
EXECUTIVE   PRODUCER    genuine   Group1

通过jQuery使用此功能......

var stimuliArray = "";
jQuery.get("Words1.txt", function(data){
  stimuliArray = data.split("\n")
});

这适用于按每个新行分割制表符分隔文件...

Cue Target  Info Group,CONTACTS FRIENDS genuine Group1,EXECUTIVE PRODUCER   genuine Group1

现在我也可以修改它以按标签分割...

var stimuliArray = "";
jQuery.get("Words1.txt", function(data){
  stimuliArray = data.split("\t")
});

它会给出这个结果......

Cue,Target,Info,Group CONTACTS,FRIENDS,genuine,Group1 
EXECUTIVE,PRODUCER,genuine,Group1 

我希望输出与原始文件一样......

Cue         Target      Info      Group
CONTACTS    FRIENDS     genuine   Group1
EXECUTIVE   PRODUCER    genuine   Group1

...这样我就可以访问这样的数据(例如,数组[2] [1]),输出就是....

PRODUCER

我试图在jQuery函数之后添加一行代码来分割选项卡或新行,但它根本不起作用......

stimuliArray = stimuliArray.split("\t");

使用那种代码,数组保持不变。

我只是希望文件可以像普通数组一样访问,以便我可以逐行访问信息以及我选择的任何索引。谢谢你的任何提示!

2 个答案:

答案 0 :(得分:3)

您需要按行(\n)分割文本,然后逐行分割(\t)。像这样的东西。

stimuliArray = data.split('\n').map(function(ln){
    return ln.split('\t');
});

答案 1 :(得分:1)

首先一步一步:

var source = `Cue	Target	Info	Group
CONTACTS	FRIENDS	genuine	Group1
EXECUTIVE	PRODUCER	genuine	Group1`;

// split the source by line first
var lines = source.split('\n'); // lines is now an array where each element is one line of text

// Now loop through each line and split the line by tab
// by applying a map function to each line
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
var output = lines.map(function(line) {
  return line.split('\t'); // returns a new array of words (for each line);
});

console.log(output[2][1]); // displays PRODUCER

如果您想要不可读的代码或ES6,这里有1个班轮:

var source = `Cue	Target	Info	Group
CONTACTS	FRIENDS	genuine	Group1
EXECUTIVE	PRODUCER	genuine	Group1`;

var output = source.split('\n').map(line => line.split('\t'));

console.log(output[2][1]); // displays PRODUCER