猿问

在 Visual Studio Code 中查找、存储和替换文本

我的编辑器中有很多文本,括号中是引用。举个例子。


“这是文本,欢迎来到我的文本 [11]。我们有几个来源 [23]。我能为你做什么 [33]”


我想找到括号之间的每个数字,并用包含它的锚标记替换该数字,就像这样<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 中完成吗?


largeQ
浏览 174回答 1
1回答

慕妹3242003

这段 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){&nbsp; &nbsp; $noBrackets = str_replace('[', '', $matches[0]);&nbsp; &nbsp; $noBrackets = str_replace(']', '', $noBrackets);&nbsp; &nbsp; $output = '<xref ref-type="bibr" rid="R'.$noBrackets.'">'.$matches[0].'</xref>';&nbsp; &nbsp; return $output;}$newString = preg_replace_callback('#\[\d+\]#', 'addLink', $str);echo '<p>'.$newString.'</p>';?>
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答