2013-02-13 2 views
1

У меня есть строка:Как сделать токенизацию строки в Javascript?

'"Apples" AND "Bananas" OR "Gala Melon"' 

Я хотел бы, чтобы преобразовать это в массив

arr = ['"Apples"', 'AND', '"Bananas"', 'OR', '"Gala Melon"'] 

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

+2

Поиск «JavaScript CSV parser» - похоже, это тот же формат – Bergi

+0

возможный дубликат [кода Javascript для анализа данных CSV] (http://stackoverflow.com/questions/1293147/javascript-code-to-parse- csv-data) – mplungjan

+0

См. http://stackoverflow.com/q/8493195/1048572 или http://stackoverflow.com/q/1293147/1048572 и замените запятые пробелами – Bergi

ответ

5
input = '"Apples" AND "Bananas" OR "Gala Melon"' 

output = input.match(/\w+|"[^"]+"/g) 
// output = ['"Apples"', 'AND', '"Bananas"', 'OR', '"Gala Melon"'] 

Объяснение регулярное выражение:

/ - начало регулярных выражений
\w+ - последовательность символов слова
| - или
"[^"]+" - ничего цитируемый (предполагая, что не избежал кавычки)
/g - конец регулярного выражения, глобальный флаг (выполнить несколько совпадений)

+0

очень хорошо, Ян, спасибо – spinners

+0

Я бы расширил '\ w' до' \ S' или даже '[^]' – Bergi

+1

@Bergi, который не будет делать. Класс символов не может содержать '' ', иначе' 'Gala' будет соответствовать. '[^ \ s"] 'будет делать. –

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