2011-11-06 11 views
13

Chcę przeskanować mój projekt Android pod kątem wszystkich zakodowanych ciągów, aby można było zlokalizować projekt, umieszczając ciągi w ciągach.xml. W Eclipse widzę opcję "Externalize Strings ...", ale nie jest ona specyficzna dla Androida.Android: czy istnieje prosty sposób na znalezienie wszystkich ciągów w moim projekcie?

Wiem, że to you can refactor individual strings, ale chciałbym zmienić wszystkie Struny na raz. Mam mnóstwo plików i staram się unikać każdego z nich ręcznie.

Odpowiedz

12

Po prostu otworzyłbym okno terminala (kit, jeśli jesteś w oknie) w katalogu głównym twojego projektu. Następnie można uruchomić coś jak następuje:

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

Oczywiście następna część jest rzeczywiście zastąpić strun do Strings.xml, które mogą być skrypty, jak również, ale może zająć więcej majsterkowania.

+0

Wydaje się być jedynym rozwiązaniem w tej chwili. –

+3

Można to również zrobić z poziomu Eclipse. Wybierz Wyszukaj-> Plik. Następnie wklej "[^" \ r \ n] * "w polu tekstowym i upewnij się, że zaznaczone jest" Wyrażenie regularne "Wyniki wyszukiwania są lepiej zorganizowane w ten sposób: – rplankenhorn

+1

Sugestia rplankenhorn działa również w androidstudio także. Cmd + shft + f i wybierz "wyrażenie regularne" – accordionfolder

-1

wierzę Google CodePro dodatek dla Eclipse posiada tę funkcję w nie gdzieś

+0

nic tam nie znalazłem, że pomoc w tym problemie – shem

7

Sam tego szukałem. Jest to dobry sposób na osiągnięcie tego:

Prawo kliknij „src” katalogu -> Source -> uzewnętrznić Struny

ten znajdzie wszystkie Pomieszczenia uzewnętrznić Strings i niech je uzewnętrznić.

nadzieję, że pomoże :)

Edycja:
To nie jest taka sama jak Android -> Extract Android String. Ale może ci pomóc znaleźć wszystkie ciągi Non-Externalize. Następnie na każdym ciągu musisz wykonać:
Ctrl + 1 -> Android -> Extract 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"; }

Dostaniesz wszystkie kody ciągów z jego wartości w zmiennej „str”.

Powiązane problemy