Android Studio 进阶(二) :结构化搜索跟替换

在 Android 开发中搜索跟替换是非常高频的操作,我们使用 Ctrl(+Shift)+F 跟Ctrl(+Shift)+R,这些快捷键已经被我们用到烂了吧。这种比较大的缺点就是只能搜索/替换固定的关键字,当我们想要搜索/替换某个【模板代码】的时候,就起不了作用了。

举个列子:

比如我们在对代码的异常进行捕获的时候,为了贪图方便,我们只是简单的打印。

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
    try {
        mCardAdapterHelper.onBindViewHolder(holder.itemView, position, getItemCount());
        holder.mImageView.setImageResource(citys[position % 4]);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这时候项目经理要求我们捕获的异常的时候,将异常日志进行收集然后上传到后台。这时候,我们只要把相应的代码添加进去就可以,这个当然简单。

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
    try {
        mCardAdapterHelper.onBindViewHolder(holder.itemView, position, getItemCount());
        holder.mImageView.setImageResource(citys[position % 4]);
    } catch (Exception e) {
        AppLogManager.getLogManager().write(e.printStackTrace());
        e.printStackTrace();
    }
}

但是,如果这样的代码充斥着整个项目,你只是用 Ctrl(+Shift)+F 跟Ctrl(+Shift)+R 定位到相对应的代码然后一个一个整改,耗时时间跟精力就太长了。

这样的情况你就可以使用结构化搜索跟替换了。

使用

Edit -> Find -> Search/Replace Structurally

这里写图片描述

然后你会看到这么一个界面:

这里写图片描述

  • ① 保存模板:将你自定义的模板进行保存,下次使用的时候可以直接导入
  • ② 编辑模板中的变量
  • ③ 查看历史记录
  • ④ 从已有模板中导入
  • ⑤:编辑搜索模板
  • ⑥:编辑替换模板

我们可以在 ⑤ 跟 ⑥ 里面直接进行编辑模板,也可以从 ④ 里面导入已有的模板。如果是自定义编辑的模板,可以使用 ① 进行保存,如果对变量还有要求的,可以在②里面里面编辑条件。

导入模板

通过操作 ④ 即可导入已有的模板代码:

这里写图片描述

导入完成之后,点击 find 即可搜索到相对应的代码

这里写图片描述

选择 replace All/replace select 即可替换。

自定义编辑模板

自定义我们需要用 来替换需要模糊搜索的代码,不需要模糊搜索的,直接用源码即可。 里面包裹的变量可以表示任何代码形式,包括返回值,代码块,表达式,变量等等。

比如:

switch($Condition$) {
  $Statement$;
}

这个就搜索所有的switch…case代码。

但是需要注意一点:定义的变量需要表示代码块或者多行代码情况下,需要通过 ② 修改成元素最少出现1次,并且最大是无上限。至于 ② 里面的操作下面会讲解。

编辑变量

让我们看下②里面的操作

在左边区域,显示刚才我们在面板 ⑤ 里面定义的代码变量。我们可以通过右边可以进行这些变量进行约束。

这里写图片描述

Text constraints:

  • Text/regular 在这输入框里面你可以输入正则表达式对该变量进行约束。
  • Invert condition:对正则进行反转
  • Apply constraint within type hierarchy :会对层级结构也会进行搜索。
  • Whole words only:会对全部的文本进行搜索,包括注释。

Occurrences count:

  • Minimum count:Minimum count:元素的最小数量
  • Maximum count:元素的最大数量
  • Unlimited:元素数量无限制

这个最大小值,表示就是模糊搜索命中的时候,这个变量表示多少元素的数量。

如果变量表示的是多行代码,最小值需要配置1个,最大值配置成无限。如果你没把握,那么就配置成无限制吧。

后面几个配置用得不是很多,所以就不讲了。(好吧,其实我也不大懂。)

好了,关于结构化结构化搜索跟替换就见到这里了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值