【问题标题】:How To Remove Indents From Code?如何从代码中删除缩进?
【发布时间】:2011-09-21 05:16:24
【问题描述】:

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

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

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


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


            return $password;

        }

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

如果我使用编辑器内置的“替换”功能并删除这两个选项卡,例如...

我得到这样的东西(不是在所有情况下,但几乎)......

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

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


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


    return $password;

}

这是因为一行中有两个以上的标签,它会替换所有 4 个标签。

我正在寻找强大到足以很好地去除缩进的正则表达式!也许还有其他解决方案?只是不建议编写没有缩进的代码!

【问题讨论】:

    标签: regex replace indentation


    【解决方案1】:

    在您最喜欢的现代编辑器中选择代码,然后点击 Shift+Tab

    【讨论】:

    • 哇!这太棒了!知道如何在代码前面添加 4 个空格(用于 StackOverflow 格式)这个巧妙的技巧吗?
    • @daGrevis 设置 -> 首选项 -> 语言菜单/选项卡设置 -> 用空格替换 -> 检查!
    • @daGrevis:将代码粘贴到 StackOverflow 编辑框中会自动将制表符替换为 4x 空格。
    • @daGrevis,您可以选择代码并点击ctrl+k / 点击菜单中的按钮。
    【解决方案2】:

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

    这只会替换每行开头的两个标签项。

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

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

    会做你想做的事。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        以下适用于记事本++:

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

        2) 查找内容:^[\t]+

        3) 替换为:

        编辑:这将替换每行开头的 1 个或多个制表符。

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

        【讨论】:

        • “替换为”当然是一个空字符串,但我想你已经知道了。 :)
        • 错误,这将替换每行开头的 all 选项卡。我认为 OP 只想要前两个。
        • 我想我当时误解了 OP。我以为他想要整个代码没有任何缩进。我会留下评论,直到澄清:)你当然是对的,谢谢。
        猜你喜欢
        • 1970-01-01
        • 2014-10-06
        • 2019-09-22
        • 2012-12-24
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多