如何在IntelliJ/VSCode中批量替换scaleAdapter调用并保留原数值?
批量替换scaleAdapter到flutter_screenutil的正则方案
你可以利用正则的捕获组功能,提取scaleAdapter()里的数值,再替换成对应单位的格式。以下是针对不同场景的具体正则规则,适用于Android Studio/VS Code等主流IDE的全局替换功能:
1. 水平方向尺寸(width相关)
搜索正则:
width:\s*scaleAdapter\((\d+(\.\d+)?)\)
替换内容:
width: $1.w
示例:
原代码:width: scaleAdapter(22) → 替换后:width:22.w
2. 垂直方向尺寸(height相关)
搜索正则:
height:\s*scaleAdapter\((\d+(\.\d+)?)\)
替换内容:
height: $1.h
示例:
原代码:height: scaleAdapter(30.5) → 替换后:height:30.5.h
3. 字号(fontSize相关)
搜索正则:
fontSize:\s*scaleAdapter\((\d+(\.\d+)?)\)
替换内容:
fontSize: $1.sp
示例:
原代码:fontSize: scaleAdapter(16) → 替换后:fontSize:16.sp
4. 圆角/通用尺寸(radius相关)
针对borderRadius、radius等属性:
搜索正则:
(borderRadius|radius):\s*scaleAdapter\((\d+(\.\d+)?)\)
替换内容:
$1: $2.r
示例:
原代码:borderRadius: scaleAdapter(8) → 替换后:borderRadius:8.r
IDE操作步骤(以Android Studio为例)
- 按
Ctrl+Shift+R打开全局替换窗口 - 勾选窗口右上角的
Regex(正则)选项 - 输入对应场景的搜索正则和替换内容
- 点击
Find预览匹配结果,确认无误后点击Replace All
注意事项
- 正则中的
\s*用于匹配属性名和scaleAdapter之间的任意空格,避免因代码格式不一致漏替换 (\d+(\.\d+)?)可以匹配整数和小数形式的数值,覆盖所有可能的尺寸输入- 如果有其他属性场景(比如
minWidth、maxHeight),只需修改正则中的属性名部分即可,例如minWidth:\s*scaleAdapter\((\d+(\.\d+)?)\)替换为minWidth: $1.w
内容的提问来源于stack exchange,提问作者Ale TheFe
相关产品推荐
相关产品推荐

