【问题标题】:Surround with quotation marks用引号括起来
【发布时间】:2010-09-12 09:08:43
【问题描述】:

在 Eclipse JDT 中如何将多行选择转换为字符串。像下面这样

发件人:

xxxx
yyyy
zzz

收件人:

"xxxx " +
"yyyy " +
"zzz"

我尝试了以下模板

"${line_selection}${cursor}"+

但这样我只能将整个街区包围,而不是单独包围每一行。如何实现多行处理,例如评论选定的块?

【问题讨论】:

    标签: eclipse


    【解决方案1】:

    这可能不是您正在寻找的答案。您可以使用 sed 流编辑器轻松实现您的要求。通过下载像cygwin 这样的工具包,可以在所有版本的 Unix 和 Windows 上使用它。在 Unix shell 命令行上运行命令

    sed 's/^/"/;s/$/"+/'
    

    并粘贴您要转换的文本。在其输出中,您将获得转换后的文本。传递给 sed 的参数表示用引号替换 (s) 行的开头 (^),并用引号和加号替换 (s) 每行的结尾 ($)。

    如果您要转换的文本很大,您可能希望通过文件重定向 sed 的输入和输出。在这种情况下,运行类似

       sed 's/^/"/;s/$/"+/' <inputfile >outputfile
    

    在 Windows 上,您还可以使用 Outwit 工具套件的 winclip 命令直接更改剪贴板中的内容。只需运行

    winclip -p | sed 's/^/"/;s/$/"+/' | winclip -c
    

    上述命令会将剪贴板的内容粘贴到 sed 中,并将结果粘贴回剪贴板。

    最后,如果你经常使用这个命令,把它放到一个 shell 脚本文件中是有意义的,这样你就可以很容易地运行它。然后,您甚至可以为其分配一个 Eclipse 键盘快捷键。

    【讨论】:

    • 我有一个荒谬的补充,我想你可能会喜欢它作为家宴。您可以避免在最后一行添加额外的+ sed 's/^/"/; s/$/"/; $! s/$/+/' --- $ 表示最后一行$! 表示不是最后一行
    【解决方案2】:

    在打开正则表达式选项的情况下查找/替换。查找:

    ^(.*)$
    

    替换为:

    "$1" +
    

    嗯,最后一行会有多余的+,你得手动删除。

    【讨论】:

      【解决方案3】:

      也许这不是你的意思,但是……

      如果我在 Eclipse 中的一行中输入双引号,然后在其中粘贴多行选择(如您的 xyz 示例),它将像这样粘贴:

      "xxxx\n" +   
      "yyyy\n" +  
      "zzz"
      

      如果您不打算使用换行符,那么您可以在"\n""" 的选择中查找/替换。

      我认为启用此功能的选项位于Window/Preferences 中,在Java/Editor/Typing/ 下,选中"Escape text when pasting into a string literal" 旁边的框。 (Eclipse 3.4 Ganymede)

      【讨论】:

      • 谢谢!仅供参考 - 在更改首选项后,我还必须重新启动 Eclipse。
      【解决方案4】:

      我会在正则表达式模式下使用 Find/Replace eclipse:

      • 查找:

        ^((?:\s(?)\S?)((?:\s(?![\r\n])))

      • 替换为

        \1"\2"\3 +

      完全保留每个字符串前后的任何空格或制表符,并用所需的双引号将它们括起来。 (最后一个“+”需要去掉)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多