我想扫描我的 Android 项目中的所有硬编码字符串,以便我可以本地化该项目,将字符串放入 strings.xml 中。我在 Eclipse 中看到“外部化字符串...”的选项,但它并非特定于 Android。
我知道你可以重构单个字符串但我想立即重构所有字符串。我有大量文件,我试图避免手动浏览每个文件。
我只需在项目的根目录中打开一个终端窗口(如果您在 Windows 上,则为 Putty)。然后您可以运行如下所示的命令:
grep -r --include=*.java '="[^"\r\n]*"' ./* --to look for something like this String test="text";, a string with =""
or
grep -r --include=*.java '"[^"\r\n]*"' ./* -- to look for any string, anything enclosed in ""
当然,下一部分是将字符串实际替换到 Strings.xml 中,这也可以编写脚本,但可能需要更多修改。
我自己也在寻找这个。有一个很好的方法可以做到这一点:
右键单击“src”目录 -> 源 -> 外部化字符串
这将找到所有非外部化字符串并让您外部化它们。
希望这会有所帮助:)
编辑:
这与 Android -> 提取 Android 字符串不同。
但它可以帮助您找到所有非外部化字符串。然后,您必须对每个字符串执行:
Ctrl + 1 -> Android -> 提取 Android 字符串。
Field[] fields = R.string.class.getDeclaredFields(); // or Field[] fields = R.string.class.getFields();
String str = "";
for (int i =0; i < fields.length; i++) {
int resId = getResources().getIdentifier(fields[i].getName(), "string", getPackageName());
str += fields[i].getName() + " = ";
if (resId != 0) {
str += getResources().getString(resId);
}
str += "\n";
}
您将获得字符串的所有代码及其值在“str”变量中。
只需配置 eclipse 以显示代码中的所有字符串: 配置 Eclipse 以抱怨 android xml 首选项的硬编码字符串
并用eclipse refactor一一替换
我相信 Eclipse 的 Google CodePro 插件有这个功能 某处