首页 > 解决方案 > 正则表达式将 kotlin syntetic 迁移到 viewBinding

问题描述

使用 kotlin-syntetic 从 xml 调用布局 id 到 Activity 可能与来自 xml 的 id 相同

但是当从 kotlin-syntetic 迁移到 viewBinding 时,我需要将 activity.kt 文件中的每个布局 ID 用法从tv_someword_middle_last更改为tvSomewordMiddleLast

我想知道如何针对这种模式使用正则表达式在 android studio 中“全部替换”?

这应该像

find: (_)(a-z)
replace: (A-Z)

但我仍然不知道该怎么做

谢谢你..

标签: androidregexandroid-studiokotlin

解决方案


如果 Android Studio 搜索和替换功能支持替换模式中的大小写更改运算符,您可以使用

_([a-z])

并替换为\U$1. 请参阅此正则表达式演示。没有被_捕获,它只是匹配。([a-z])创建一个 ID 为 1 的捕获组(可以$1从替换模式中引用它),并匹配一个小写的 ASCII 字母。替换中的 - 如果支持的\U话 - 将替换右侧的部分变为大写。

否则,您可以使用以下Java 代码

String example = "tv_someword_middle_last";
Matcher m = Pattern.compile("_([a-z])").matcher(example);
example = m.replaceAll(r -> m.group(1).toUpperCase() );
System.out.println( example );
// => tvSomewordMiddleLast

推荐阅读