Как удалить отступы из кода? - PullRequest
3 голосов
/ 23 июня 2011

Давайте рассмотрим этот пример кода ... Не на код, а на отступы.

        protected function _hashPassword( $password, $salt, $nuts = '' ) {

            if ( $nuts === '' ) {
                $nuts = Kohana::config( 'a11n' )->nuts;
            }


            $password =
                sha1(
                    $password
                    . $salt
                    . $nuts
                );


            return $password;

        }

Он взят из гораздо большего исходного кода.Как видите, он имеет две вкладки.Я хочу как-то удалить отступ от него, не печатая.Каким-то образом.

Если я использую встроенную в редактор функцию «Заменить» и удаляю эти две вкладки, как ...

'Replace' function

Я получаю что-то вроде этого(не во всех случаях, но почти) ...

protected function _hashPassword( $password, $salt, $nuts = '' ) {

    if ( $nuts === '' ) {
$nuts = Kohana::config( 'a11n' )->nuts;
    }


    $password =
sha1(
    $password
    . $salt
    . $nuts
);


    return $password;

}

Это потому, что в одной строке содержится более двух вкладок, и она заменяет все 4 вкладки.

Iищу регулярное выражение, достаточно мощное, чтобы красиво удалить отступ! Может быть, есть какие-то другие решения?Только не предлагайте писать код без отступов!

Ответы [ 4 ]

15 голосов
/ 23 июня 2011

выберите код в вашем любимом современном редакторе и нажмите shift - tab

1 голос
/ 23 июня 2011

Используя регулярные выражения, замените ^\t\t пустой строкой. Не используя регулярные выражения, просто замените \n\t\t на \n. Также рассмотрите возможность использования форматера исходного кода .

1 голос
/ 23 июня 2011

Следующее относится к Notepad ++:

1) Установить режим поиска на: Регулярное выражение

2) Найти что: ^[\t]+

3) Заменить на:

Редактировать: это заменит 1 или более вкладок в начале каждой строки.

Альтернативный метод: выберите весь исходный код и нажмите Shift-Tab несколько раз. Он удалит вкладки в начале каждой строки, как и регулярное выражение выше. Надеюсь, это поможет!

1 голос
/ 23 июня 2011

Конечно, вы хотите просто заменить ^\t\t или использовать любой символ, который ваш редактор имеет для привязки начала строки, если это не ^ (я понятия не имею, каковы возможности вашего конкретного редактора, только(довольно хорошо) понимание того, как работают большинство механизмов регулярных выражений).

Это заменит только элементы с двумя вкладками в начале каждой строки.

Например, если бы я делал этоиз командной строки под Linux

sed 's/^\t\t//g' oldfile.c >newfile.c

будет делать то, что вы хотите.

...