eclipse - найти и заменить символ подчеркивания в именах переменных - PullRequest
4 голосов
/ 20 октября 2011

Мне нужны имена переменных рефакторинга.

variable_foo

to

variableFoo

Возможно ли это сделать с помощью инструмента поиска / замены Eclipse??

edit:

Моя проблема не только заменить '_', но и отредактировать следующую букву в верхнем регистре.

Его можно использовать с помощью регулярных выражений ??

Ответы [ 6 ]

4 голосов
/ 23 декабря 2011

В Eclipse Marketplace доступен плагин под названием AnyEditTools , который добавляет множество вариантов конвертации, один из которых - от / до camelCase и underscore_names (Alt+Ctrl+K).

Однако в Java-редакторе Eclipse (Indigo) в настоящее время отсутствует правильная навигация в identifiers_with_underscores - он работает только для CONSTANT_NAMES_CURRENTLY. (Подробности здесь: https://bugs.eclipse.org/bugs/show_bug.cgi?id=67381)

3 голосов
/ 20 октября 2011

Эти ссылки

http://www.php.net/manual/en/function.preg-replace.php#89364

http://www.blog.highub.com/regular-expression/perl-regex/perl-regex-capitalize-the-first-letter-of-a-word/

, похоже, указывает на то, что синтаксис Perl и / или PHP Regex поддерживает оператор \ u, который в верхнем регистре соответствует совпадению, следующему за ним в выражении замены, - и я думаю, что он интерпретируется как удержание от ' vi '(Текстовый редактор UNIX) - понятия не имею, почему его не существует в более современной и популярной реализации регулярных выражений

Итак, если вы можете получить свой код в систему, которая поддерживает соответствующую версию vi (или редактор, который полностью поддерживает этот синтаксис perl), а затем выяснить, как открыть в нем ваши документы, как запустить поиск -replace и т. д., тогда вам придется использовать выражение, подобное следующему:

/\b(\w+?)_(\w+)/$1\u$2/

или

find:     \b(\w+?)_(\w+)
replace:  $1\u$2
1 голос
/ 20 октября 2011

Если я вас правильно понимаю, вы хотите найти любой vunderscore, за которым следует символ нижнего регистра, и заменить его на версию этого символа в верхнем регистре, т.е. oo, _bar _b az -> _bar B az и т. Д.

К сожалению, похоже, что Eclipse не может это обеспечить, поскольку, как уже говорили другие, вы можете использовать Ctrl + H (или Ctrl + F в одном файле) и регулярные выражения, чтобы найти эти символы подчеркивания + символы, но регулярные выражения не предоставляют возможности для преобразования совпадений (например, строчные буквы в верхние).

Лучшее, что вы можете сделать, - это найти эти переменные с помощью регулярных выражений, а затем рефакторировать их так, как вы хотите, например, поиск с использованием выражения, подобного следующему: \w_\w, которое должно найти var_foo, bar1_baz, но не _bar, пометить их и переименовать (Alt + LShift + R).

Просто обратите внимание на следующее: \w_\w также может найти методы, комментарии и т. Д., Поскольку поиск не знает, что он на самом деле нашел (будь то переменная, имя класса, метод и т. Д.).

1 голос
/ 20 октября 2011

Да, вы можете сделать это так:

find : (.*)_(.)(.*)
replace : $1\C$2$3 

И это должно сработать

1 голос
/ 20 октября 2011

Проблема с поиском и заменой заключается в том, что она не поддерживает AST, поэтому, даже если вы могли бы использовать ссылку и указывать ее в верхнем регистре, она бы это делала во всем файле, а не только для переменных.

IMO, вам лучше найти переменные и переименовать их, используя рефакторинг "переименовывать переменную", который также будет правильно обрабатывать переименование геттера / сеттера (если применимо) и т. Д., А не полагаться на (относительно невежественный) поиск и-замена.

0 голосов
/ 20 октября 2011

Может быть, не тот ответ, который вы ищете, но для всех этих задач поиска / замены я использую Notepad ++.Я кодирую в Eclipse, и делаю массовые поиски / замены по всему моему источнику в Notepad ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...