2014-05-04 4 views
4

У меня есть следующий массив:Как преобразовать строку в массив?

var mystr = "Name[Daniel],Name2[Alguien],Date[2009],Date[2014]"; 

Как я могу преобразовать его в массив так:

var array = ['Daniel','Alguien','2009',2014]; 
+0

Разделить его на массив с помощью 'split (" - ")', а затем повторно вывести значение с помощью регулярного выражения –

+0

возможного дубликата [Ссылка - что это регулярное выражение означает?] (Http://stackoverflow.com/ Вопросы/22937618/reference-what-do-this-regex-mean) – RobG

+1

Дубликат [* Regex, чтобы получить строку между фигурными фигурными скобками "{Я хочу, что между фигурными фигурными скобками}" *) (http://stackoverflow.com/ вопросы/413071/regex-to-get-string-between-curly-braces-i-want-whats-between-the-curly-brace) – RobG

ответ

6

Вы можете сделать это следующим образом:

var mystr = "Name[Daniel],Name2[Alguien],Date[2009],Date[2014]"; 
var array = mystr.match(/\[.+?\]/g).map(function(value){ // searches for values in [] 
    return value.replace(/[\[\]]/g,""); // removes [] 
}); 
+0

@RobG, да. Отредактировано –

+0

Привет, спасибо за ваш ответ. Ваша первая часть кода работает отлично. Новое решение не работает, ** Fiddle: ** http://jsfiddle.net/wx4Lm/ – user3288852

0

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

var mystr = "Name[Daniel],Name2[Alguien],Date[2009],Date[2014]"; 
var array = mystr.split(","); 
re = /\[(.*)\]/; 
var newArray = []; 

for (var i = 0; i < array.length; i++) { 
    newArray.push(array[i].match(re)[1]); 
} 

newArray = ['Daniel', 'Alguien', '2009', 2014]; 
Смежные вопросы