我想扫描我的Android项目中的所有硬编码字符串,以便我可以本地化项目,将字符串放入strings.xml中。我在Eclipse中看到了一个选项“Externalize Strings ...”,但它并不特定于Android。Android:有没有一种简单的方法来查找我的项目中的所有字符串?
我知道you can refactor individual strings但我想重新构造所有的字符串。我有很多文件,而且我正在努力避免手动通过每一个文件。
我想扫描我的Android项目中的所有硬编码字符串,以便我可以本地化项目,将字符串放入strings.xml中。我在Eclipse中看到了一个选项“Externalize Strings ...”,但它并不特定于Android。Android:有没有一种简单的方法来查找我的项目中的所有字符串?
我知道you can refactor individual strings但我想重新构造所有的字符串。我有很多文件,而且我正在努力避免手动通过每一个文件。
我只是在项目的根目录下打开一个终端窗口(如果你在窗口中使用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,这可能是脚本出来为好,但可能需要更多的修修补补。
只是配置Eclipse以显示代码的所有字符串: Configuring eclipse to complain for hard coded strings for android xml preferences
而且随着日食重构
替换它们一个接一个我正在寻找这个自己。有这样做的一个很好的方式:
在“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中做到这一点。选择搜索 - >文件。然后在文本框中粘贴“[^”\ r \ n] *“,并确保选中了”正则表达式“,搜索结果按照这种方式组织得更好。 – rplankenhorn
rplankenhorn的建议也适用于androidstudio。并选择“正则表达式” – accordionfolder