Jak mogę użyć wyrażenia regularnego, aby zamienić duże litery na małe w Intellij IDEA?


92

Poszukałem go w Google i dowiedziałem się, jak zrobić z innymi parserami wyrażeń regularnych:

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions
http://www.regular-expressions.info/replacecase.html

Próbowałem tych i żadna z nich nie działa. Na przykład chcę użyć wyrażenia regularnego, aby to zmienić:

private String Name;
private Integer Bar = 2;

Do tego:

private String name;
private Integer bar = 2;

Próbowałem czegoś takiego:

replace: private (\S+) (\S+)
with: private $1 $L$2
with: private $1 \L$2
with: <etc.>

Żaden z nich nie działa. Czy można to zrobić w intellij, czy jest to brakująca funkcja? To jest tylko dla celów edukacyjnych, a przykład jest wymyślony. Chcę tylko wiedzieć, czy można to zrobić w intellij.


3
Czy jest jakiś powód, dla którego chcesz użyć wyrażenia regularnego? IntelliJ ma do tego skrót klawiszowy .
— ajp15243

@ ajp15243 To jest tylko do celów edukacyjnych i przykład jest wymyślony. Dosłownie chcę wiedzieć, czy jest to możliwe w intellij.
— Daniel Kaplan,

3
Słusznie! Chciałem się tylko upewnić. Znalazłem odniesienie do składni IntelliJ Regex , aw komentarzach ktoś chce zadać to samo pytanie co ty. Moderator odpowiedział (i myślę, że trochę źle zrozumiał), ale odpowiedź wskazuje, że nie jest to możliwe w przypadku składni wyrażeń regularnych IntelliJ.
— ajp15243

Zawsze możesz napisać do tego wtyczkę.
— Meo

1
@tieTYT gaoagong's jest całkiem niezły, dam mu to :).
— ajp15243

Odpowiedzi:


174

W IDEA 15 możesz użyć poniższych przełączników do przełączania wielkości liter w przechwyconych wyrażeniach. Jest to teraz oficjalnie udokumentowane od czasu wydania tej wersji.

  • \l: małe litery w następnym znaku
  • \u: w górę przypadku kolejnego znaku
  • \L: małe litery w następnych znakach, aż \Edo końca lub końca zastępującego ciągu
  • \U: w górę wielkości liter następnych znaków aż do a \Elub końca ciągu zastępującego
  • \E: zaznacz koniec zmiany sprawy zainicjowanej przez \Ulub\L

Oto przykład użycia (ponieważ dokumentacja nie jest jasna):

znajdź: (\ w + _) + (\ w +) zamień: \ L $ 1 $ 2 \ E

Powyższe spowoduje konwersję FOO_BAR_BAZna foo_bar_bazitd. 1 $ odnosi się do pierwszej znalezionej grupy przechwytywania (w nawiasach), 2 $ do drugiego zestawu itd.

Dla dobra potomnych: zostało to początkowo zgłoszone przez @gaoagong i tam udokumentowane .


13

Szukałem odpowiedzi, a następnie zdałem sobie sprawę, że @ ajp15243 już odpowiedział na to powyżej. Obecnie w Intellij nie ma możliwości użycia funkcji zastępowania wyrażeń regularnych do zmiany wielkości liter. Pod następującym adresem URL znajduje się krótka dyskusja na temat tej funkcji.

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

Możesz także głosować na funkcję w numerze Youtrack tutaj:

http://youtrack.jetbrains.com/issue/IDEA-70451

Istnieje wtyczka regex Intellij, ale niestety nie obsługuje ona również znaków pisowni dolnej i górnej.

http://plugins.jetbrains.com/plugin/19?pr=idea

Być może będziesz musiał po prostu uruchomić pliki przez program w Perlu, aby je poprawnie zastąpić.


1
Zgodnie z youtrackiem, jest to dodawane w wersji 15 IntelliJ
— Kevin Sheehan

6

Zacząłem używać wtyczki Idea Vim i nauczyłem się robić takie rzeczy w Vimie. W ten sposób mogłem ponownie wykorzystać te umiejętności poza Idea.

Oto polecenie vim, aby zrobić to, o co prosiłeś.

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g

Regex jest wprowadzany w IDE. Dodatkowe ukośniki są wymagane, aby uciec ze wzoru wyrażenia regularnego do Vima.

W ramach IDE

Znajdź wtyczkę z poziomu IDE. wprowadź opis obrazu tutaj


2
Ogromne obejście, które prawdopodobnie nie pomoże 99% ludzi tutaj, ponieważ nie będą chcieli używać emulacji VIM. Ale zdarza mi się już zainstalowany ten plugin tak to działa na mnie :)
— Daniel Kaplan

1
Wiem… Vi i Vim wydają się na początku bezużyteczni dla każdego, kto używa IDE. W końcu zacząłem uczyć się Vi po spotkaniu ich wszystkich na serwerach. Podoba mi się teraz, kiedy nie muszę zmieniać sposobu myślenia podczas poruszania się między narzędziami.
— chinto

Dopiero zaczynam, nie jestem jeszcze biegły. Czy uważasz, że jesteś bardziej produktywny w edycji w Intellij-IDEA z IDEAVim niż przed użyciem Vi?
— Daniel Kaplan,

1
Coraz bardziej… Byłem dobry w zaćmieniach. Następnie przeniósł się do Intellij i nauczył się większości jego sztuczek. Wtedy zdałem sobie sprawę, że nauczenie się Vima uczyni mnie od razu dobrym w serwerach i stacjach roboczych. Widzę również, że Vim jest znacznie potężniejszy w manipulowaniu tekstem i nawigacji. Nadal używam skrótów IDE dla wszystkich specjalizacji IDE, takich jak refaktoryzacja i znajdowanie referencji, i przechodzę do definicji itp. Jest to jednak bardzo ważne, aby przełączać się między trybami.
— chinto

1
To doskonałe rozwiązanie dla osób, które potrafią korzystać z vi. Włączam IdeaVim, gdy muszę wykonać złożone podstawienia, a następnie wycofuję się ponownie, aby cieszyć się własnymi funkcjami edytora Idea. Chciałbym jednak, aby IdeaVim miała wskaźnik pokazujący, kiedy jest aktywny.
— Pan Lance E Sloan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.