2014-12-15 2 views
-1

я следующая строка:Анализировать строка для получения параметров

"paramFoo={12}, paramBar={1}, paramFooBar={2713}" 

Теперь мне нужно получить значения для этих 3 Params. Есть ли способ сделать это в JavaScript/jQuery и/или AngularJS?

Я могу только думать:

  1. Поиск 'paramFoo = {' и удалить его из строки.
  2. Получить позицию первого '}'
  3. Получить значение от 0 символов - (. Поз из 2) - 1
  4. Удалить символы 0 - (поз из 2.) из строки
  5. [повторить 1-4 еще два раза]

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

спасибо!

+0

Это не выглядит как стандарт ..... ничего. Вероятно, вам придется «расщепить» («,») и т. Д. – adeneo

+0

Да, раскол («,») - хорошая идея. Но как я могу получить значение внутри {}? Это всегда число от 0 слишком XXXX. split ("{"), а затем split ("}")? – Tream

+0

** Вам нужно ** знать, что 12 является значением paramFOO? –

ответ

2

Я хотел бы сделать что-то вроде этого:

function parse(s) { 
    var re = /^([a-zA-Z]+)=\{([0-9]+)\}(?:\,\s*(.*))?$/, parts, res = {}; 
    while (s && (parts = re.exec(s))) { 
     res[parts[1]] = parseInt(parts[2]); 
     s = parts[3]; 
    } 
    return res; 
} 
+0

Работает просто отлично (возвращает объект с ключом => значение). Большое спасибо! <3 – Tream

+0

Обновлено: Я забыл проверить, что s не null (он работал, тем не менее, на хроме.) –

4

Просто используйте регулярное выражение!

str.match(/\d+/g) 

предоставит вам массив [12,1,2714].

Если у вас есть что-то отличное от чисел, регулярное выражение будет более сложным.

+2

где связь между 12 и paramFoo? –

+1

@RoyiNamir OP только говорит, что ему нужны значения, а не имя параметра, которому он был назначен. –

+1

@RoryMcCrossan Я не думаю, что OP знает, что он хочет сказать вам правду. он просто недостаточно ясен –

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