首页 > 解决方案 > Visual Studio Code - 通过跨多个页面的一行中的数学运算更改特定整数的值

问题描述

不确定这是否可以通过 Visual Studio Code 完成,但我想我会先检查这里,然后再手动修改项目中的数千行。

请参阅下面的示例以帮助解释我面临的问题。

我有多个文件分布在多个文件夹中,带有标识文本(在本例中为 Bolts),另一个标识符(在本例中为质量)值等于每个页面上不同的整数。我想知道是否可以通过基本的数学方程用更新的整数替换这些整数。

页面 A:

{
   "key": "storage01/bolts",
   "quality": 53.12,
   "weight": 30
},
{
   "key": "storage01/cogs",
   "quality": 39.17,
   "weight": 29
}

B页:

{
   "key": "storage02/bolts",
   "quality": 18.9,
   "weight": 30
},
{
   "key": "storage02/cogs",
   "quality": 76.2,
   "weight": 29
}

我想通过将它们乘以 0.29 来更改质量的两个数字,所以结果最终会像这样..

页面 A:

{
   "key": "storage01/bolts",
   "quality": 15.4048,
   "weight": 30
},
{
   "key": "storage01/cogs",
   "quality": 39.17,
   "weight": 29
}

B页:

{
   "key": "storage02/bolts",
   "quality": 5.481,
   "weight": 30
},
{
   "key": "storage02/cogs",
   "quality": 76.2,
   "weight": 29
}

标签: visual-studio-codereplacefind

解决方案


借助map-replace.js和另一个扩展搜索编辑器:应用更改,您可以轻松完成此操作。感谢@rioV8 的第一个扩展、它的替换代码和第二个正则表达式。

这个想法是在搜索编辑器中对文件进行搜索,在该编辑器中映射替换这些值,然后将这些更改保存到所有底层文件。

(1) 打开一个新的搜索编辑器(从命令面板或对命令进行键绑定)或在面板中进行搜索,然后选择Open in Editor

(2) 进行正则表达式搜索\{\s*.*bolts[\w\W]*?\}

(3) 现在在 Search Editor 选项卡中执行 Find with(?<="quality":\s*)[\d.]+

(3) Alt+Enter选择所有匹配项(您可能必须先在编辑器中单击)。

(4) 运行Map and Replace Selection with JavaScript Function(v, i) => `${(Number(v)*0.29).toFixed(2)}进行所需的更改。设置toFixed()为你想要的。

(5)Apply Search Editor changes to worksapceSearch Editor: Apply Changes扩展运行

并且您的更改将保存在所有文件中。将这些扩展和搜索编辑器功能一起使用非常巧妙 - 你的用例是一个很好的用例(只要跨文件的初始正则表达式不是很难正确)。

(6) Save all



演示(简化替换,因为我似乎无法粘贴到输入框中):

映射替换为应用所有更改演示


推荐阅读