从数组中的文件中读取行

时间:2011-04-01 07:44:38

标签: javascript dojo

我的文件main.log类似于:

10-01-1970 01:42:52 Bus_Power device 9 up
10-01-1970 01:42:52 External_Power device 9 up
10-01-1970 01:42:57 Bus_Power device 1 down
10-01-1970 01:42:57 Bus_Power device 2 down

每一行都是一个数据。如何使用Dojo或纯JavaScript解析行数组?

例如:

['10-01-1970 01:42:52 Bus_Power device 9 up','10-01-1970 01:42:52 External_Power device 9 up']

3 个答案:

答案 0 :(得分:4)

var xhr = new XMLHttpRequest();

xhr.open('GET', 'main.log', false);
xhr.send(null);

var log = xhr.responseText.split('\n');

// `log` is the array of logs you want

注意:为简单起见,请同步完成,因为没有提供有关此功能应用的详细信息。

答案 1 :(得分:3)

如果您将文件放入字符串(比如'text'),那么您可以这样做:

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

检查服务器上的文件是否仅使用一个换行符(UNIX样式)或CR-LF对(Windows样式)终止行。

如何将文件首先放入字符串?您可以使用dojo.xhrGet(...)。在Dojo文档中查找。

答案 2 :(得分:1)

假设您正在阅读文本/日志文件,以下代码是从stackflow.com的another post修改的,

var contentType = "application/x-www-form-urlencoded; charset=utf-8";

var request = new XMLHttpRequest(); 
request.open("GET", 'test.log', false);
request.setRequestHeader('Content-type', contentType);

if (request.overrideMimeType) request.overrideMimeType(contentType);

// exception handling
try { request.send(null); } catch (e) { return null; }
if (request.status == 500 || request.status == 404 || request.status == 2 || (request.status == 0 && request.responseText == '')) return null;

lines = request.responseText.split('\n')
for( var i in lines ) {
    console.log(lines[i]);
}

问题可能由编码/解码问题引起,因此我们也可能需要异常处理。有关XMLHttpRequest的更多信息,请访问here