【发布时间】:2010-09-12 09:08:43
【问题描述】:
在 Eclipse JDT 中如何将多行选择转换为字符串。像下面这样
发件人:
xxxx
yyyy
zzz
收件人:
"xxxx " +
"yyyy " +
"zzz"
我尝试了以下模板
"${line_selection}${cursor}"+
但这样我只能将整个街区包围,而不是单独包围每一行。如何实现多行处理,例如评论选定的块?
【问题讨论】:
标签: eclipse
在 Eclipse JDT 中如何将多行选择转换为字符串。像下面这样
发件人:
xxxx
yyyy
zzz
收件人:
"xxxx " +
"yyyy " +
"zzz"
我尝试了以下模板
"${line_selection}${cursor}"+
但这样我只能将整个街区包围,而不是单独包围每一行。如何实现多行处理,例如评论选定的块?
【问题讨论】:
标签: eclipse
这可能不是您正在寻找的答案。您可以使用 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/$/+/' --- $ 表示最后一行,$! 表示不是最后一行。
在打开正则表达式选项的情况下查找/替换。查找:
^(.*)$
替换为:
"$1" +
嗯,最后一行会有多余的+,你得手动删除。
【讨论】:
也许这不是你的意思,但是……
如果我在 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)
【讨论】:
我会在正则表达式模式下使用 Find/Replace eclipse:
查找:
^((?:\s(?)\S?)((?:\s(?![\r\n])))
替换为
\1"\2"\3 +
将完全保留每个字符串前后的任何空格或制表符,并用所需的双引号将它们括起来。 (最后一个“+”需要去掉)
【讨论】: