Как получить символы / слова, которые l ie с обеих сторон, между которыми попадают выбранные нами символы? - PullRequest
0 голосов
/ 16 января 2020

Давайте рассмотрим строку str , которая определяется как:

const str = " 'I am going' - 'I' "

и функцию cal c () , которую можно использовать как:

console.log( calc(str) ) // => am going

Итак, я решил сделать cal c () , используя регулярное выражение! Итак, вот о чем я думал.

const calc = (str) => {
 const reg = // Not understanding how to get the strings between which '-' falls
 str = str.replace(reg, function(_, a) {
   const b = remove(a[0], a[1])
   return b
 })
 return str
}

remove () - это функция для удаления слов из строки, которую я сделал. Вы можете свободно изменять мой код, если в нем есть что-то неправильное. Это пример того, как я себе представлял. Поэтому, пожалуйста, помогите мне завершить мою функцию!

1 Ответ

0 голосов
/ 16 января 2020

Вы можете разбить строку на - и получить содержимое в пределах '', предъявив иск match. Затем создайте динамическое регулярное выражение c, используя конструктор RegExp и replace все экземпляры второго совпадения из первого совпадения

function calc(str) {
  const [first, second] = str.split(/\s*-\s*/)
                             .map(s => s.match(/'([^']+)'/)[1])

  return first.replace(new RegExp(second, "g"), '')
}

console.log(calc("'I am going' - 'I'"))
console.log(calc("'Remove this from this string' - 'this'"))

Если в вашей среде поддерживается matchAll, вы также можете:

const [first, second] = Array.from(str.matchAll(/'([^']+)'/g), ([,m]) => m) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...