如何从代码中删除缩进?

时间:2011-06-23 13:05:17

标签: regex replace indentation

让我们考虑这个代码示例...不要看代码,而是缩进。

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

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


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


            return $password;

        }

它取自更大的源代码。如您所见,它缩进了2个标签。我想在不使用打字的情况下以某种方式从中删除缩进。不知。

如果我使用编辑器内置“替换”功能并删除这两个标签,如...

'Replace' function

我得到这样的东西(并非在所有情况下,但差不多)......

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

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


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


    return $password;

}

这是因为一行上只有两个标签,它取代了所有4个标签。

我正在寻找能够很好地删除缩进的正则表达式!也许还有其他解决方案吗?只是不建议在没有缩进的情况下编写代码!

4 个答案:

答案 0 :(得分:15)

在您喜欢的现代编辑器中选择代码,然后点击 shift - 标签

答案 1 :(得分:1)

当然你想简单地替换^\t\t,或者如果它不是^那么使用你的编辑器用于行首锚的任何字符(我不知道你的特定编辑器的功能是什么)是,只是(非常好)理解大多数正则表达式引擎的驱动方式。)

这只会替换每行开头的双标签项目。

例如,如果我是从Linux下的命令行执行此操作,

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

会做你想做的事。

答案 2 :(得分:1)

使用正则表达式,将^\t\t替换为空字符串。 如果不使用正则表达式,只需将\n\t\t替换为\n即可。 另请考虑使用source code formatter

答案 3 :(得分:1)

以下内容适用于Notepad ++:

1)将搜索模式设置为:正则表达式

2)找到:^[\t]+

3)替换为:

编辑:这将从每行的开头替换1个或多个标签。

替代方法:选择整个源代码并多次点击Shift-Tab。它将从每行的开头删除制表符,就像上面的正则表达式一样。我希望这有帮助!