visual-studio-code - 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
}
解决方案
借助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 worksapce
从Search Editor: Apply Changes
扩展运行
并且您的更改将保存在所有文件中。将这些扩展和搜索编辑器功能一起使用非常巧妙 - 你的用例是一个很好的用例(只要跨文件的初始正则表达式不是很难正确)。
(6) Save all
演示(简化替换,因为我似乎无法粘贴到输入框中):
推荐阅读
- time - 流入聚合查询返回错误时间
- android - 如何从 PagedListAdapter 刷新 RecyclerView 中的数据?
- wpf - WPF - Scrollviewer 内的列表框不会滚动项目
- java - Hibernate 组合多个查询
- d3.js - d3.js V4布局放大时如何保持圆、笔画和字体大小?
- python - Matplotlib 中的字符串 xticks 重叠和 TypeError
- java - 在带有翻译属性文件的 Jtwig 中使用 UTF-8
- svn - 在 SVN 中更新时 - 获取 HTTP 状态 502 代理错误
- vb.net - 列表框控件 Winforms 选定项颜色 - 多个列表框控件
- angular - Angular2+ 使用内置的 Serverservice 对服务进行单元测试