我想掃描我的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