в javascript / jquery, как я могу разобрать строку (с пробелами несоответствия) в массив - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть строка, которая выглядит следующим образом:

1, 2, 4, 4,5, 6  

ПРИМЕЧАНИЕ: обратите внимание на несоответствие в пробелах

Каков наилучший способ преобразовать это в массив целых чисел

Ответы [ 7 ]

4 голосов
/ 04 апреля 2011
var s = '1, 2, 4,    4,5, 6  ';
var o = s.trim().split(/ *, */);

( Демонстрация. ) Сначала обрезка (может не потребоваться), затем разделение запятой (,), отбрасывание всех пробелов ().


ОБНОВЛЕНИЕ
Приведение к целому числу с использованием jQuery для итерации ( demo ):

var s = '1, 2, 4,    4,5, 6  ';
var a = s.trim().split(/ *, */);
var o = $.map(a, function(elm) {
    return parseInt(elm, 10);
});

Примечание: простой цикл forможно было бы использовать вместо ( демо ):

var s = '1, 2, 4,    4,5, 6  ';
var a = s.trim().split(/ *, */);
var o = [];
for (i = 0, j = a.length; i < j; i++) {
    o.push(parseInt(a[i], 10));
};
1 голос
/ 04 апреля 2011

Поскольку регулярные выражения кажутся довольно популярными в ответах, представленных до сих пор, я решил добавить пару решений на основе RexExp

Если вам действительно нужны целые числа:

var str = '1, 2, 4,    4,5, 6  ';
var arr = [];

str.replace( /\d+/g, function( i ) {
    arr.push( parseInt( i, 10 ) );
});

console.log( arr ); //[1, 2, 4, 4, 5, 6]

Если строки будут делать

var str = '1, 2, 4,    4,5, 6  ';

var arr = str.match( /\d+/g );

console.log( arr ) //["1", "2", "4", "4", "5", "6"]
0 голосов
/ 04 апреля 2011
var str= '1, 2, 4, 4,5, 6  ';
var integerarray= str.match(/\d+/g).map(Number);
0 голосов
/ 04 апреля 2011

Эй, просто чтобы завершить предложения ... самый быстрый способ преобразовать числовую строку в число - это унарный оператор +. например,

var nums = ' 1, 2, 4, 4,5, 6 '.replace(/^\s+|\s+$/g,'').split(/\D+/);
var i = nums.length;
while (i--) {
  nums[i] = +nums[i]; 
}

Вы также можете использовать:

nums[i] = nums[i] | 0; 

Возможно, вам лучше преобразовать их в числа при их использовании.

0 голосов
/ 04 апреля 2011
var array = [];
var string = "1, 2, 4, 4,5, 6  ";
$(string.replace(/\s+/g, "").split(",")).each(function() {
    array.push(parseInt(this));
});

return array;
0 голосов
/ 04 апреля 2011

Попробуйте это:

   var inputStr = "1, 2, 4, 4,5, 6 ";
    var arrInput = inputStr.split(",");
    var arrOutput = new Array();
    for(var ctr in arrInput){
       arrOutput[ctr] = parseInt(arrInput[ctr].replace(" ",""));
    }
0 голосов
/ 04 апреля 2011

var arr = str.split(/,\s*/);

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