2009-09-08 15 views
39

Jeśli mam następujący tekst w moim edytorze Eclipse:Jak szukać powrotu karetki w Eclipse

Text Line 1 
Text Line 2 

chciałbym złączyć tekst do:

Text Line 1Text Line 2 

Mój pierwszy pomysł został do wyszukaj znak powrotu karetki "\ n" i zastąp go znakiem "", aby go złączyć.

Próbowałem użyć funkcji wyszukiwania zaćmienia, ale nie rozpoznaje znaku powrotu karetki.

Czy istnieje inny edytor, który może to zrobić?

Dzięki =)

Odpowiedz

59

Eclipse to robi, jeśli:

  • Włącz tryb wyrażenia regularnego jest wyszukiwanie/zastąpić
  • wpisać \ R dla nowej linii
2

Większość znaleźć i zastąpić zadania w redakcji (przynajmniej TextPad) mają zdolność do zastąpienia przez regex. Jeśli możesz znaleźć tę opcję w Eclipse, po prostu użyj tego.

8

Po prostu użyj Edit -> Find/Replace, włącz pole wyboru Regular Expressions, wyszukaj \n i zastąp go spacją.

Próbowałem go w Eclipse 3.4 i działało dobrze.

+0

+1 za faktyczne wyjaśnienie kroków. – McGafter

0

\ R jest poprawne wyrażenie regularne dla powrotu karetki . Ale edytor standardowy Eclipse go nie znajduje. więc użyć edytora zewnętrznego, np Notepad ++

0

Krótka odpowiedź:

postanowiłem wykorzystać \s++ jako separatora w wielu wyrażeń wyszukiwania linia (z wyrażeń regularnych włączone) i \Qfoo\E ucieczki znaków specjalnych w razie potrzeby.

Długa odpowiedź:

Jak soru już odpowiedział na dowolnej sekwencji „Unicode” lineBreak wyszukiwania wyrażenie regularne z \R mogą być użyte.

Czysty powrót karetki reprezentowany jest przez \r. Duże i małe litery mają znaczenie.

znalazłem ten SO pytanie ponieważ chciałem sprawdzić multi ekspresji linii w Eclipse, w tym podziały wiersza i zakładek:

@Override 
    @Transient 

W celu umieszczenia spacji w moim wyrażenie regularne wyszukiwania użyłem (na platformie Windows)

@Override\r\n\t*@Transient 

następujących wyrażeń również pracować:

Uwaga że drugie wyrażenie pasuje również @Override @Transient bez przerwy linii, co jest dobre dla mnie.

Następujące wyrażeń nie! pracować dla mnie:

  • @Override\r\t*@Transient
  • @Override\n\t*@Transient

Wyjaśnienie niektórych wyrażeń regularnych:

  • \R reprezentuje dowolny ciąg Unicode linebreak (np \r\n)
  • \s reprezentuje dowolny biały s Tempo
  • \t oznacza JOT
  • * zero lub więcej zdarzeń
  • ++ pasuje do jednego albo większej liczby Zdarzeń
  • \Q i \E zawartość ucieczki owijania. Używaj ich, czy oryginalny wyraz wielu linia zawiera znaki specjalne regex, na przykład

\Q/**\E\s++\Q*\E

mecze

/** 
    * 

zobacz także:

Difference between \n and \r?

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

Powiązane problemy