2010-02-12 54 views
30

Ich würde gerne alle meine Quellcodedateien durchsuchen und jedes Vorkommen von k_Xyyy durch k_xyyy ersetzen (den ersten Buchstaben nach k_ von Großbuchstaben auf Kleinbuchstaben umstellen).Wie ersetzt man Großbuchstaben in Kleinbuchstaben mit Regex in Eclipse?

Ich benutze den Eclipse-Dialog, um mehrere Dateien zu suchen und zu ersetzen. Gerade jetzt habe ich die Regex \bk_([A-Z]).

Wie lege ich die Ersetzungszeichenfolge der Regex fest?

+0

Können Sie die Re-Factoring-Funktion von Eclipse hierfür nicht verwenden? –

+0

Ich brauche es regelmäßig, wenn ich Entitäten aus Tabellen mit Spaltennamenpräfixen erzeuge. – chinto

Antwort

11

Das ist nicht möglich. Entweder Refactoring Funktionalität Eclipse verwenden, oder ersetzen Sie sie einen nach dem anderen:

regex  : \bk_A 
replacement : k_a 

regex  : \bk_B 
replacement : k_b 

... 

regex  : \bk_Z 
replacement : k_z 
15

ich nur die gleichen Aufgabe gelöst (hatte .net-Schnittstelle in Java-Schnittstelle zu aktivieren), um die Leistung von VIM Verwendung :)

void DoMethod1 -> void doMethod1 
Foo PerformMethod2 -> Foo performMethod2 
:%s/\(^\s*\w\+\s\+\)\([A-Z]\)/\1\L\2/g 

Hier suchen wir (optional Vertiefung durch Rückgabetyp Leerzeichen gefolgt gefolgt) von (Großbuchstaben), gefolgt. Klammern fangen Gruppen ein. Dann führen wir eine Ersetzung durch, wobei zuerst die Gruppe \ 1 Kleinbuchstaben \ L die zweite Erfassungsgruppe \ 2 erfasst wird.

Dies erfordert natürlich, dass Sie die Datei in Vim öffnen, aber das ist sowieso viel schneller als die gleiche Sache von Hand in Eclipse.

0

(für mich, da ich Programmierung gerade erst begonnen, das war mehr Spaß, darüber nachzudenken) $pattern_to_change nehmen und wandeln sie von ascii mit ord() .Nehmen die resultierenden Dezember Nummer und fügen 32. Dann konvertieren $desired_pattern zurück zu ascii in Dezimalzahlen mit chr().

Oder laden Sie einfach SublimeText herunter und verwenden Sie die Funktion Suchen und Ersetzen, um alle Vorkommen zu finden und ersetzen Sie sie durch den Unterschiedstext (Sublime hat auch Regex).

Ich bin sicher, dass Sie eine Milliarde von Hand konvertiert haben könnten, da dieser Beitrag wie 5 Jahre alt ist, aber Sie könnten dies in 5 Minuten mit Sublime abgeschlossen haben.

Wirklich nützlicher Texteditor.

1

Ich musste dies für einen großen Teil des Quellcodes tun, wo Zeichenfolgenliterale in Kleinbuchstaben konvertiert werden mussten. Ich habe einen Weg gefunden mit Notepad ++ und dem Python Script Plugin, wie es here verwendet.

+5

in Notepad ++ können Sie einfach '\ L $ 1 \ E' in der Ersetzungszeichenfolge verwenden, um die erste übereinstimmende Gruppe in Kleinbuchstaben zu konvertieren. Das Gleiche funktioniert mit \ U ... \ E für Großbuchstaben – fuemf5

Verwandte Themen