2012-06-20 2 views
0

Значение примерно такое: 12 23 345 3454 21.Номер извлечения из пробелов

Мне нужно получить номера из этого и хранить в массиве, поэтому мой массив должен выглядеть как values = new Array(12,23,345,3454,21);.

Моя проблема в том, что я могу удалить пробелы, но это как 1223345345421.

ответ

7

Вы можете использовать split(" "), чтобы разделить строку на пробелы.

Чтобы быть более тщательным, вы должны обрезать начальные и конечные пробелы, и раскол вдоль нескольких космических персонажей:

> var numbers_in_string = " 12 23 345 3454 21 "; 
> var numbers_in_array = numbers_in_string.trim().split(/\s+/); 
> console.log(numbers_in_arrays) 
["12", "23", "345", "3454", "21"] 

EDIT

Как @Sangdol обмолвился, дифферента() не может работайте в IE9, поэтому вы можете использовать one of these solutions, чтобы добавить функциональность trim() в IE9. Или просто замените trim() на replace(/^\s+|\s+$/g, ''). Любые решения будут работать как совместимость для кросс-браузерной совместимости.

.replace(/^\s+|\s+$/g, '').split(/\s+/) 
+2

Будьте осторожны. 'Trim' не работает под IE9. –

+2

Чтобы сохранить необходимость преобразования элементов в числа позже, вы можете добавить следующее в конец решения: .map (function (val) {return parseInt (val, 10);}) – Jules

1

В качестве альтернативы для разделения, вы можете использовать матч:

' 12 23 345 3454 21 '.match(/\d+/g); //12,23,345,3454,21 

Обратите внимание, что это более точно относится к шаблону, который вы пытаетесь извлечь, что может подойти или нет. Вы получаете только совпадающие шаблоны, поэтому любые промежуточные несоответствия (включая пробелы) не возвращаются.

Смежные вопросы