去除IntelliJ上的引号/括号/方括号等周围字符

37

在IntelliJ中有没有一种方法可以删除括号、方括号、引号等周围的符号?例如,如果我有:

"string"

有没有办法去掉匹配的引号并得到这个结果?

string
5个回答

9

虽然不是直接的方法,但以下替换表达式(ctrl+R,选中 Regex)可能会有所帮助:

查找:"(.*)"

替换为:$1


给那位点踩的用户,请问为什么您认为这个答案不正确呢? - vikingsteve
1
首先,它对于可嵌套的东西(如括号)不起作用,因为它无法跟踪正确的匹配元素。虽然我没有给这个投票点赞,所以我不知道那是否是原因。但对我来说,我想要在按下^W后输入正确范围的内容。 - Daniel C. Sobral
3
非贪婪匹配可能使用 "(.*?)" - Will

7

编辑:我找到了更简单的方法(插件代码和正则表达式留在下面怀旧)

Webstorm有扩展选择和收缩选择功能,在Mac上,它们绑定到alt-upArrow和alt-downArrow。

您可以使用扩展选择来选择内容、引号/大括号/圆括号,然后记录一个宏(我称之为unwrap),并执行以下操作:

  1. 缩小选择一次
  2. 复制
  3. 扩展选择一次
  4. 粘贴

然后您可以保存宏并添加一个快捷键绑定。

任何时候您想要解开某些东西,只需扩展选择,直到包括外部花括号,然后按下热键,它将替换包括花括号在内的选择内容与其内部内容。


我做了一个小插件,

我使用live-plugin来安装/编写代码。

它依赖于此正则表达式:

[\["'({](.+)['"})\]]

正则表达式通常也可以在WebStorm的搜索/替换功能中使用(勾选了Regex和In Selection),但在某些神秘的情况下会失败,例如:在括号内部的单引号,即使外层括号没有被选择也会出现这种情况。

宏解决方案在需要多次扩展选择的情况下无法起作用。例如,当一个字符串中有多个单词时,"string string"。 - Ivan Pajic

4

IDEA有一个功能可以跳转到匹配的大括号。
您可以创建宏,例如:跳转到下一个大括号 - 删除一个字符 - 跳转到上一个大括号 - 再删除一个字符。
然后将快捷键设置为此宏即可。


2
  1. 在Mac上按住option键,然后按上箭头键直到内部内容被选中。
  2. 剪切(command+x)所选部分,但保留周围的括号、方括号、引号等。
  3. 执行步骤1以选择周围的内容,并将其删除。
  4. 粘贴(command+v)内容。

这就是我的做法。

代码菜单中有一个unwrap/remove功能,但在某些情况下不会按预期工作。


0

剪切S表达式,在Mac上是Alt+S。


1
我的错,这显然是Cursive插件的一部分。 - drew
很有用。虽然Clion上没有,但下次我使用IntelliJ时会试试看。 - Daniel C. Sobral
@drew,你应该更新你的回答并提到cursive插件。 我已经安装了cursive,这个答案对我很有帮助。一旦你更新了答案,我会点赞的。 - Abhishek Kashyap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接