2011-11-06 13 views
13

Quiero escanear mi proyecto de Android para todas las cadenas codificadas, así que puedo localizar el proyecto, colocando las cadenas en strings.xml. Veo una opción en Eclipse para 'Externalizar cadenas ...' pero no es específica de Android.Android: ¿hay alguna manera fácil de encontrar todas las cadenas en mi proyecto?

you can refactor individual strings pero me gustaría refactorizar todas las cadenas a la vez. Tengo un montón de archivos, y estoy tratando de evitar revisarlos manualmente.

Respuesta

12

Simplemente abriría una ventana de terminal (masilla si está en Windows) en el directorio raíz de su proyecto. A continuación, puede ejecutar algo como lo siguiente:

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 "" 

Por supuesto, la siguiente parte es en realidad sustituir las cadenas en el strings.xml, que podría ser el guión fuera así, pero puede tomar más retoques.

+0

Parece la única solución en este momento. –

+3

También podría hacer esto desde Eclipse. Elija Buscar-> Archivo. A continuación, pegue "[^" \ r \ n] * "en el campo de texto y asegúrese de que esté marcada" Expresión regular ". Los resultados de búsqueda están mejor organizados de esta manera. – rplankenhorn

+1

La sugerencia de rplankenhorn también funciona bien en androidstudio. Cmd + shft + f y seleccione "expresión regular" – accordionfolder

-1

creo que el complemento Google CodePro para Eclipse tiene esta característica allí algún lugar

+0

no hay nada que haya encontrado que me ayude con este problema – shem

7

Estaba buscando esto yo mismo. Hay una buena manera de hacer esto:

clic derecho en el directorio "src" -> Fuente -> Externalizar Cuerdas

Esto encontrará todo para no Externalizar Cuerdas y dejar que ellos exteriorizan.

Esperamos que esto ayude :)

Editar:
Esto no es igual que el de Android -> Extracto de Android de cadena. Pero puede ayudarte a encontrar todas las cadenas que no sean de externalización. Luego, en cada cadena, deberá realizar:
Ctrl + 1 -> Android -> Extraer Android String.

1

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"; }

Usted recibirá todos los códigos de cuerdas con sus valores en la variable "str".

Cuestiones relacionadas