2009-08-25 142 views
1

此代码随机时失败输入来自具体来源,它的工作原理通常是确定:str.split()随机失败?

var str = input; 
var lines = str.split("¤"); 
var map = {}; 
for(var i = 0; i < lines.length; i++) { var pieces = lines[i].split("="); 
map[pieces[0]] = pieces[1];} 

例如该输入数据不会产生MAP可言,只有一个映射条目:

"[core]¤student_id=teach54yuy63v¤student_name=Demo, teacher¤credit=c¤lesson_location=¤lesson_status=n,a¤path=¤score=¤time=00:00:00¤[Core_Lesson]¤tmreal_status=n,a¤tmreal_score=¤¤¤[Core_Vendor]¤¤[Objectives_Status]¤¤" 

该数据作品:

[芯]¤student_id=169yyuy63v¤student_name=, Si¤credit=c¤lesson_location=1¤lesson_status= N,a¤path=¤score=¤tim e = 00:00:00¤[Core_Lesson]¤real_status=i¤real_score=¤talhits= int:

+0

的中charCode可能是一个字符编码的问题。什么编码是'str'和你的JavaScript源文件? – 2009-08-25 11:25:14

+0

首先,您可以尝试使用'String.fromCharCode(yourseparator)',而不是将该字符粘贴到html中,然后查看是否有效。 – Alterlife 2009-08-25 11:26:13

+0

好的,什么是字符代码为Ã – Tom 2009-08-25 11:28:34

回答

1

它与编码有关。也许一些资源使用ASCII,一些UTF。转换,或确保所有资源具有相同的编码。

1

当您尝试访问第二项从“=”上分割“[core]”时出现错误。

您需要在“=”分割后确认是否有密钥和值。

var str = input; 
var lines = str.split("¤"); 
var map = {}; 
for (var i = 0; i < lines.length; i++) { 
    var pieces = lines[i].split("="); 
    if (pieces.length == 2) { 
     map[pieces[0]] = pieces[1]; 
    } 
} 
1

尝试使用\ XA4

这是 '¤'