2014-01-28 3 views
0

Мне нужно разбить строку на разделитель так, чтобы он стал 2 массивами. Вот пример строки "55,56,*,51,52".разделительная строка на основе разделителя javascript regex

Я хочу, чтобы в конечном итоге с [["55","56],["51","52"]] у меня есть с расколом синтаксического дерева() в JavaScript, чтобы не уточнить наличие я считаю, мне нужно решение регулярное выражение, которое я не знаю, как это сделать.

если строка процесса выглядит следующим образом ",*,51,52" он должен вернуть [[],["51,"52"]]
если это выглядит как "51,*," он должен вернуть [["51"],[]]
и ",*," должен возвращать [[],[]] -

Возможно ли это?

Спасибо.

ответ

0

Вот сокращенный вариант без использования раскола:

function twoArrays(str) { 
    return JSON.parse(("[[" + str + "]]").replace(/,\*,/g, "],[")); 
} 

// Examples: 
twoArrays("55,56,*,51,52") // => [[55,56],[51,52]] 
twoArrays("55,56,*,")  // => [[55,56],[]] 
twoArrays(",*,")   // => [[],[]] 
+0

Я получаю сообщение об ошибке при попытке: СинтаксисError: Неожиданный токен *. Я не правильно обозначил разделитель? – user1700933

+0

Я забыл скобки. Я отредактировал свой ответ – gtournie

+0

Это отлично работало и короче первого ответа, который также хорошо работал. Благодаря! – user1700933

2

Вы можете сделать это с помощью метода string.split:

var str = "55,56,*,51,52".split('*'); 
for (var i=0;i<str.length;i++) str[i] = str[i].split(','); 
//str now contains [["55", "56", ""], ["", "51", "52"]] 

Вы можете изменить строку "55,56*51,52", чтобы получить результат [["55","56],["51","52"]].

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

var str = "55,56,*,51,52".split('*'); 
for (var i=0;i<str.length;i++) { 
    str[i] = str[i].split(','); 
    for (var n=0;n<str[i].length;n++) 
     !str[i][n] && str[i].splice(n,1); 
} 
//str now contains [["55","56],["51","52"]] 

Тогда он будет работать с запятыми вокруг звездочки.

+0

вы также можете просто использовать регулярные выражения, чтобы искать, 'либо в начале или в конце строки и удалить его. – tenub

+0

Если метод split примет регулярное выражение, эти запятые могут быть разделены на первый раз с помощью ',? \ * ,?' – sln

+0

Или не регулярное выражение ', *,', если OP уверен, что это всегда та форма. – sln

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