Поиск, сохранение и замена текста в Visual Studio Code - PullRequest
0 голосов
/ 16 июня 2020

У меня в редакторе много текста со ссылками в скобках. Так например.

«Это текст, добро пожаловать в мой текст [11]. У нас есть несколько источников [23]. Что я могу сделать для вас [33]»

I хочу найти каждое число между скобками и заменить это число содержащим его тегом привязки, например, <xref ref-type="bibr" rid="R11">[11]</xref>, а затем <xref ref-type="bibr" rid="R23">[23]</xref> Теперь я нахожу числа в скобках с помощью регулярного выражения ( \ [ . *?] ) в редакторе, а затем скопируйте и вставьте то, что я хочу заменить. Это занимает много времени, если требуется заменить более 100 ссылок.

Есть ли способ найти, сохранить в переменной, а затем заменить указанной переменной?

Одно из возможных решений, которое я придумал, - использовать JavaScript, однако я не могу заставить его работать правильно, как видно из моих выводов.

Код:

const document = 'This is text, welcome to my text [11]. We have several sources [23]. What can I do for you [33]'
const regex = /\[.*?\]/gm
let result = document.match(regex);

let array = result
var arrayLength = array.length;
console.log(arrayLength);
for (var i = 0; i < arrayLength; i++) {
    console.log(document.replace(regex, '<xref ref-type="bibr" rid="R' +  array[i] + '">' + array[i] + "</xref>"));
}

Вывод в консоль:

This is text, welcome to my text <xref ref-type="bibr" rid="R[11]">[11]</xref>. We have several sources <xref ref-type="bibr" rid="R[11]">[11]</xref>. What can I do for you <xref ref-type="bibr" rid="R[11]">[11]</xref>
This is text, welcome to my text <xref ref-type="bibr" rid="R[23]">[23]</xref>. We have several sources <xref ref-type="bibr" rid="R[23]">[23]</xref>. What can I do for you <xref ref-type="bibr" rid="R[23]">[23]</xref>
This is text, welcome to my text <xref ref-type="bibr" rid="R[33]">[33]</xref>. We have several sources <xref ref-type="bibr" rid="R[33]">[33]</xref>. What can I do for you <xref ref-type="bibr" rid="R[33]">[33]</xref>

Как видите, мне также нужно удалить скобки из атрибута rid = . Я бы тоже хотел сделать это в самом редакторе. Если это невозможно, я решил, что могу использовать node.js и записать в файл. Любое другое решение также поможет. Следует ли это делать в Python?

1 Ответ

1 голос
/ 16 июня 2020

Этот PHP код выполняет это:

<?php

$str = 'This is text, welcome to my text [11]. We have several sources [23]. What can I do for you [33]';

function addLink ($matches){
    $noBrackets = str_replace('[', '', $matches[0]);
    $noBrackets = str_replace(']', '', $noBrackets);
    $output = '<xref ref-type="bibr" rid="R'.$noBrackets.'">'.$matches[0].'</xref>';
    return $output;
}

$newString = preg_replace_callback('#\[\d+\]#', 'addLink', $str);

echo '<p>'.$newString.'</p>';

?>
...