繁体   English   中英

按换行拆分“未定义”

[英]Split by newline returning “undefined”

我有一个文本文件,我用新行分隔。

$.get("2016-05-06.log", function(data){
    var lines = data.split("\n");
    $.each(lines, function(n, elem) {
       var piece = elem.split("]");
       console.log(n, ": ", elem);
    });

但是,数组lines的第一项,即n = 0 ,返回undefined。 这个数组是不是零索引的吗? 或者我错过了什么?

编辑:这是我的日志文件中的最新示例。

[Wed May 04 13:48:44 2016] [error] [client 0.0.0.0] PHP Warning:  Missing argument 1 for getTypeOptionList(), called in /var/www/...proposal.php on line 969 and defined in /var/www/Intranet2/trunk/contracts/functions.php on line 149, referer: http://intranet/...
[Wed May 04 13:48:44 2016] [error] [client 0.0.0.0] PHP Warning:  /var/www/...proposal.php on line 1048 and defined in /var/www/Intranet2/trunk/contracts/functions.php on line 373, referrer: http://intranet/...

您的代码正常运行。

必须有很多原因。

好像你的文件有utf-8 BOM元素或其他东西。

要证明它有一些test.log文件并一个接一个地写入数据,然后检查您的代码。 也许你最好检查一下line var的空白情况。

 $(function() { $.get("http://num8er.me/test.log", function(data){ var lines = data.split("\\n"); for(var n = 0; n < lines.length; n++) { var line = lines[n].toString().replace(/^\\s+|\\s+$/gm,''); if(line != '') { alert(n + ": " + line); } } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

这似乎可以在JavaScript中实现。 我在Windows 10上的Node.js v10.11.0上使用WebStorm IDE来评估表达式,得到以下结果。 字符串“| \\ n”使用RegularExpression / ^(\\ w | \\ s)* \\ | /分成3部分,第二部分未定义。

这与您的第一个元素未定义的示例不同,因此它不仅仅是关于数组的开头或其他内容。 我的模式中没有换行符,但是在被拆分的字符串中,它不是字符串中的第一个字符。 总而言之,您的示例似乎并不是唯一可能发生的情况。

"|\n" . split( /^(\w|\s)*\|/ ) [0]  // -> ""
"|\n" . split( /^(\w|\s)*\|/ ) [1]  // -> undefined
"|\n" . split( /^(\w|\s)*\|/ ) [2]  // -> "\n"

我原以为split()总是返回一个字符串数组。 但似乎并非总是如此。 不要指望它永远不会被定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM