str.split()随机失败?

时间:2009-08-25 11:21:51

标签: javascript string

当输入来自特定来源时,此代码会随机失败,通常可以正常工作:

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=¤time= 00:00:00¤[Core_Lesson]¤real_status=i¤real_score=¤talhits= INT:

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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];
   }
}

答案 2 :(得分:1)

尝试使用\ xA4

这是'¤'的charCode