str.split () не работает случайно? - PullRequest
1 голос
/ 25 августа 2009

этот код не работает случайным образом, когда ввод поступает из определенных источников, он обычно работает нормально:

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

Ответы [ 3 ]

1 голос
/ 25 августа 2009

Вы получаете сообщение об ошибке, когда пытаетесь получить доступ ко второму элементу после разбиения «[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 голос
/ 25 августа 2009

попробуйте использовать \ xA4

это charCode '¤'

1 голос
/ 25 августа 2009

Это связано с кодированием. Может быть, некоторые ресурсы используют ASCII, некоторые UTF. Преобразуйте или убедитесь, что все ресурсы имеют одинаковую кодировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...