регулярное выражение: динамически заменить искомое слово - PullRequest
0 голосов
/ 09 марта 2019

Я хочу заменить file:///Downloads/project другим словом, например, ссылкой на github:

const string = 'file:///Downloads/project/users/controllers/users/controller.js';

Я пытался работать с .replace a world by world, но я столкнулся с проблемой, что file:///Downloads/project isдинамическое значение, которое может время от времени изменяться.

string.replace(/file\:\/\/Downloads\/project\/users\/controller.js/gi, 'https://gitlab.com')

Поэтому я хочу найти слово project и заменить его на обратный путь другим путем или словом

Ответы [ 4 ]

1 голос
/ 09 марта 2019

Используя регулярное выражение, вы можете сопоставить первую группу, включающую /project, и заменить первую заключенную в скобки группу захвата на https://gitlab.com.Здесь p1 обозначает первую группу захвата, заключенную в скобки, а p2 обозначает вторую группу захвата, заключенную в скобки.

const str = 'file:///Downloads/project/users/controllers/users/controller.js';

const res = str.replace(/^(.|\/)+\w*project(.+)*/gi, function(match, p1, p2) {
  return 'https://gitlab.com' + p2;
});

console.log(res);
1 голос
/ 09 марта 2019

Для достижения ожидаемого результата используйте нижеприведенную опцию использования indexOf и substr и, наконец, замените на gitlab url

  1. Получить индекс проекта
  2. Получить строку от 0 до индекса проекта
  3. Заменить строку из шага 2 на gitlab, используя опцию замены

const string = 'file:///Downloads/project/users/controllers/users/controller.js';
const index = string.indexOf('project') 
console.log(string.replace(string.substr(0, index), 'https://gitlab.com/'))

codepen - https://codepen.io/nagasai/pen/qvjdEa?editors=1010

0 голосов
/ 09 марта 2019
'https://gitlab.com/' + string.substr(string.indexOf('project'))

Сначала найдите позицию 'project' в вашей строке

string.indexOf('project')

, затем получите подстроку из этой позиции до конца строки (substr идет до конца, когда нетпредоставляется второй аргумент)

string.substring(indexOfProject)

, затем объедините его с '+'.Обратите внимание, что URL заканчивается на «/», потому что ваша строка будет начинаться с «p».

'https://gitlab.com/' + extractedString
0 голосов
/ 09 марта 2019

для этого вам не нужно регулярное выражение

const string = 'file:///Downloads/project/users/controllers/users/controller.js',
  yourValue = "file:///Downloads/project/",
  res = string.replace(yourValue, "https://gitlab.com/")

console.log(res)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...