简书链接:androidstudio正则占位替换
文章字数:401,阅读全文大约需要1分钟

1
@dimen/(.*?)_fract

替换

1
@fraction/$1_fract

效果

1
@dimen/numkeyboard_horizontalGap_fract

替换为

1
@fraction/numkeyboard_horizontalGap_fract

做这个事情的原因:
eclipse不支持dimen里面写百分比,得换一种写法,但是这么多东西改起来太累了,很多个文件夹,那贼累,所以先给所有加上fract标记,代表xx%的,然后使用此正则一键替换了。

2021-9-11 15:47:10
汉化 先从简单的开始, 替换 匹配 a("我lOVE你“)这样的,首尾为中文。

1
(\(\"[\u4E00-\u9FFF][a-zA-Z]*[\u4E00-\u9FFF]*?\"\))
1
(\(\"[\u4E00-\u9FFF][a-zA-Z]*[\u4E00-\u9FFF]*?\"\))

替换为

1
( TC.getStr(TC.getInstance(),R.string.no_defined_,$1) )

Q%NKX$IK$E%EZ(%1%Z35EXN.png

优化后,
\((\".*?[\u4E00-\u9FFF].*?\")\)
替换为
(TC.getDbStr(TC.getInstance(),0,$1))

上面很多漏的比如
Log.w(tag,”操作失败,可能当前” + aClassX.getName() + “类没有实例!”);

1
2
3
(\"[\u4E00-\u9FFF]+\S+[\u4E00-\u9FFF]\" \+.*?\"\))


image.png
如果被抽取多次, throw new RuntimeException( TC.getStr(TC.getInstance(), R.string.no_defined_,(TC.getDbStr(TC.getInstance(),0,"没有初始化")) ) );那么下面代码可以还原

TC\.getStr\(T.*(\".*?[\u4E00-\u9FFF]\").*?\)\;

TC.getDbStr(TC.getInstance(),0,$1);
意思就是把””里面的包含中文的全部给抽取出来变成$1进行大一统。
屁股后面不是;的话,就要另外改。

正则写的不能匹配所有,总有一些漏网之鱼
\(\"(.*?[\u4E00-\u9FFF].*?)\"
TC.getDbStr(TC.getAppContext(),0,"$1")