Как определить несколько подстрок различного размера из строки API в JavaScript - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть вызов API, который как часть объекта возвращает что-то вроде этого:

"aaps":"1.50U\/h 0.36U(0.18|0.18) -1.07 0g"

Я бы хотел извлечь из этого две подстроки, но размер подстрок будет отличаться. Например, я хотел бы, чтобы одна переменная была подстрокой числа, которое предшествует секунда "U". Но это значение будет где-то между 0,00 и 100,99. Поэтому я не могу просто рассчитывать на использование indexof().

Также я хотел бы, чтобы другая переменная была подстрокой числа, предшествующего "g". Эта переменная будет иметь значение от 0 до 250, поэтому количество символов в подстроке будет различным.

1 Ответ

0 голосов
/ 10 сентября 2018

Функция JavaScript exec отлично подходит для этого.

var string = '1.50U\/h 0.36U(0.18|0.18) -1.07 0g';
var regex = /.+U.+(\d+\.\d{2})U.+(\d+)g/;
var match = regex.exec(string);
if (match) {
  console.log('Matches: ' + match[1] + ', ' + match[2]);
  // Matches: 0.36, 0
}

Регулярное выражение захватывает два нужных вам числа, а функция exec выделяет их в массив.Вот что означает регулярное выражение:

.+                         | Match one or more consecutive characters (any)
  U                        | Match the letter "U"
   .+                      | Match one or more consecutive characters (any)
     (                     | Capture the following:
      \d+                  |     One or more consecutive digits
         \.                |     The character "."
           \d{2}           |     Exactly 2 consecutive digits
                )          | End capture
                 U         | Match the letter "U"
                  .+       | Match one or more consecutive characters (any)
                    (\d+)  | Capture one or more consecutive digits
                         g | Match the letter "g"
...