开发vscode扩展以替换文本

时间:2018-07-25 09:23:49

标签: javascript typescript visual-studio-code vscode-extensions

我有一个数据列表,需要在行的开头和行末添加一个'符号。所以原始数据看起来像

11223334444xxx55555
11xxx223334444555xxx55
11xxxx22333444xxx455555
11xxxxx22333444455555
11xxxxxx223334444555xxx55

我希望所有行看起来像

11223334444yyyy55555
11yyyy223334444555yyyy55
11yyyyx22333444yyyy455555
11yyyyxx22333444455555
11yyyyyyyy223334444555yyyy55

即'yyyy'替换为'xxx',我如何编写代码?打字稿和JavaScript都是完美的。


对不起,我不好。我想开发一个扩展来做到这一点,上面只是一个例子。下面的许多答案只是缺少选择全文部分的内容。

const textEditor = vscode.window.activeTextEditor;
if (!textEditor) {
    return;  // No open text editor
}

var firstLine = textEditor.document.lineAt(0);
var lastLine = textEditor.document.lineAt(textEditor.document.lineCount - 1);
var textRange = new vscode.Range(0,
    firstLine.range.start.character,
    textEditor.document.lineCount - 1,
    lastLine.range.end.character);

    textEditor.edit(function (editBuilder) {
        editBuilder.replace(textRange, '$1');
    });
});
上面的

replace函数只有一个replace参数,而不是两个,我该如何替换呢?

3 个答案:

答案 0 :(得分:0)

尝试一下:

让checkD = 11223334444xxx55555 11xxx223334444555xxx55 11xxxx22333444xxx455555 11xxxxx22333444455555 11xxxxxx223334444555xxx55 ;

checkD.replace(/ xxx / g,'yyyy');

答案 1 :(得分:0)

您可以使用正则表达式进行尝试。在MDN上了解更多信息。

这是一个数组示例:

let data = [ 
  "11223334444xxx55555",
  "11xxx223334444555xxx55",
  "11xxxx22333444xxx455555",
  "11xxxxx22333444455555",
  "11xxxxxx223334444555xxx55"
];

let max = data.length;
for (let i = 0; i < max; i++) {
  let regex = new RegExp("xxx", "g")
  data[i] = data[i].replace(regex, "yyyy")
}

console.log(data);

这是一个字符串示例:

let data = `11223334444xxx55555
11xxx223334444555xxx55
11xxxx22333444xxx455555
11xxxxx22333444455555
11xxxxxx223334444555xxx55`;

let regex = new RegExp("xxx", "g")
data = data.replace(regex, "yyyy")

console.log(data);

答案 2 :(得分:0)

  

即'yyyy'代替'xxx',我如何编写代码

splitjoin是我使用的

str.split('yyyy').join('xxx');