不确定这是否可以通过 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
}
最佳答案
在map-replace.js的帮助下和另一个分机Search Editor: Apply Changes你可以很容易地做到这一点。感谢@rioV8 提供第一个扩展、替换代码和第二个正则表达式。
想法是在搜索编辑器中跨文件进行搜索,在该编辑器中映射替换这些值,然后将这些更改保存到所有基础文件。
(1) 打开一个新的搜索编辑器(从命令面板或对命令进行键绑定(bind))或在面板中进行搜索,然后选择 Open in Editor
.
(2) 使用正则表达式搜索 \{\s*.*bolts[\w\W]*?\}
(3) 现在在“搜索编辑器”选项卡中使用 (?<="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 worksapce
来自 Search Editor: Apply Changes
扩展名
并且您的更改将保存在所有文件中。将这些扩展和搜索编辑器功能一起使用非常巧妙 - 您的用例是一个很好的用例(只要跨文件的初始正则表达式不是很难正确处理)。
(6) Save all
演示(使用简化替换,因为我似乎无法粘贴到输入框中):
关于visual-studio-code - Visual Studio Code - 在多个页面的一行中使用数学运算更改特定整数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62572353/