工程中直接使用的Toast.makeText(text).show();然后有一天产品说要让Toast居中显示,嗯改动不大,但是使用的地方有百十来条吧,换成之前也就全局搜下Toast.makeText,然后将前面改成ToastUtil.show(...)。然后再删掉尾部的.show(),也就重复个百八十次吧。
前端时间略微学习了下正则,第一感觉是先看下AS是否支持正则搜索。
如图这个地方点中,就是按正则搜索了。搜索到之后,我需要进行全局替换。我需要保留toast中的字符串部分,干掉其它,然后替换成ToastUtil.show(保留的字符串)。需要先将要保留的地方进行分组。加上()就行了。问题在于如果在替换时进行引用。
之前学正则,分组可以命名:(?P<name>)这种。然后可以(?P=name)去用。结果不行,应该是正则表达式中后面引用前面的引用可以用这个方式吧。然后跑到嗨正则上进行测试。发现\1可以,然后回到AS尝试,发现依然不行,\name $name等都试了,不行,然后又去嗨正则,发现左边可以选择语音,默认是php的,也就是说AS不是支持php的。然后嗨正则中选中了javascripte。然后进行尝试,发现$1可以获取到,然后去As尝试也没有问题,大功告成。
原始toast:Toast.makeText(text).show();
需要改成:ToastUtil.showToast(text);
全局搜索,选中正则,输入正则:Toast.makeText(?<a>.*).show\(\);
替换部分输入:ToastUtil.showToast$1;
替换即可,当然会有一个小问题,就是ToastUtil的Import问题,需要替换时处理,但是操作复杂度也远小于之前的步骤了