用引号引起来

时间:2020-03-06 14:36:02  来源:igfitidea点击:

在Eclipse JDT中如何将多行选择转换为String。像下面

从:

xxxx
yyyy
zzz

到:

"xxxx " +
"yyyy " +
"zzz"

我尝试了以下模板

"${line_selection}${cursor}"+

但是那样一来,我只会将整个块而不是分别包围在每一行中。如何实现多行处理,例如注释所选块?

解决方案

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

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

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

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

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

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

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

上面的命令会将剪贴板的内容粘贴到sed中,然后将结果重新粘贴到剪贴板中。

最后,如果我们经常使用此命令,则将其放置在Shell脚本文件中很有意义,这样我们就可以轻松地运行它。然后,我们甚至可以为其分配Eclipse键盘快捷键。

查找/替换正则表达式选项处于打开状态。找:

^(.*)$

用。。。来代替:

"" +

好吧,最后一行会有一个多余的" +",我们必须手动将其删除。

也许这不是意思,但是...

如果我在Eclipse中一行并且输入双引号,则在该行中粘贴多行选择内容(如xyz示例),它将像这样粘贴:

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

然后,如果我们不打算使用换行符,则只需在" \ n"中选择/替换为""中即可。

我认为启用此功能的选项位于"窗口/首选项"的" Java /编辑器/类型/"下,选中"粘贴到字符串文字时转义文本"旁边的框。 (Eclipse 3.4 Ganymede)

我会在正则表达式模式下使用"查找/替换" Eclipse:

  • 查找:^((?:\ s(?)\ S?)((?:\ s(?![\ r \ n]))))
  • 替换为\ 1" \ 2" \ 3 +

将精确保留每个字符串前后的空间或者制表符,并用所需的双引号引起来。 (需要删除最后一个" +")