【问题标题】:Get lines of Strings into an "array"将字符串行放入“数组”
【发布时间】:2020-02-24 08:44:30
【问题描述】:

我在 VSCode 中经常有几行字符串,但需要一个用于 PowerShell 或 SQL 的数组。

我在 VSCode 中有

line1
line2
line3

我在 Vscode 中需要类似的东西

('line1','line2','line3')

导致

Select * from Table where Column in ('line1','line2','line3')

$a = 'line1','line2','line3'

有这个功能/扩展吗?

【问题讨论】:

  • 目前尚不清楚您要达到的目标。您说您在 VScode 中工作,但想要一个用于 powershell 或 sql 的数组......有什么关系?
  • 您是否想要一个将粘贴的几行(或文件内容)转换为数组类型的 powershell 对象的脚本?
  • 我可以编写脚本,但我觉得它很乏味。您也可以使用多个光标对其进行编辑 - 但有时有 20 个元素。所以我很想标记该部分并单击“转换”:)
  • 希望更清楚。必须在这里提高自己。
  • 好问题;顺便说一句:请不要将@(...) 用于数组文字 - 不仅没有必要,而且在 PowerShell 版本高达 5.0 中效率低下,但更重要的是,它通过错误地暗示它 constructs 数组 - 参见this answer 的底部。

标签: powershell visual-studio-code


【解决方案1】:

你可以制作一个sn-p,它会很容易做到这一点。在 keybindings.json 中添加一个键绑定以触发该 sn-p:

{
  "key": "alt+b",                             // or whatever keybinding you want
  "command": "editor.action.insertSnippet",
  "args": {
    "snippet": "(${TM_SELECTED_TEXT/\\s*(.+)(\\s)?/'$1'${2:+,}/g})"
  }
}

${TM_SELECTED_TEXT/\\s*(.+)(\\s)?/'$1'${2:+,}/g} 获取选中的文本。 正则表达式将获取捕获组 1 中每一行的文本,以及捕获组 2 中的任何换行符。

然后'group 1' 后跟, 仅当存在组 2 时才添加。由于g 正则表达式标志,所有行都会发生这种情况。


如果您希望在输出中将空行表示为空字符串,请使用

  "snippet": "(${TM_SELECTED_TEXT/((.+)(\\r\\n))|(.+)|(\\r\\n)/'$2$4'${3:+,}${5:+,}/g})"

这个演示:


如果你想要这个 sn-p 的输出:

Select * from Table where Column in ('line1','line2','line3')

然后使用:

"snippet": "Select * from Table where Column in (${TM_SELECTED_TEXT/\\s*(.+)(\\s)?/'$1'${2:+,}/g})"

【讨论】:

  • 干得好;对于严格的面向行的转换,您无需担心选择中的尾随换行符,请使用"(${TM_SELECTED_TEXT/(.+)(\\n(?=\\S))?/'$1'${2:+,}/g})"
  • 真的很喜欢这个!想要改进它,所以在 PowerShell 文件中 VSCode 将执行 PowerShell 行,在 SQL 文件中会有选择 - 但似乎键盘绑定还不能绑定到文件类型。再次感谢。
  • 没有从@mklement0 获得解决方案以正常运行,因为在我的测试中它未能创建逗号“,”。而且我真的必须提高我的正则表达式技巧。
  • @theq,试试"(${TM_SELECTED_TEXT/(.+|(?=\\r?\\n[^]))(\\r?\\n(?!$))?/'$1'${2:+, }/g})"
  • 以上对我有用并将空行转换为空字符串。伟大的。 @mklement0
【解决方案2】:

您可以使用正则表达式替换:

  • 选择你想加入的代码行
  • ctrl+h,将模式改为正则表达式
  • 在查找类型\n
  • 在替换类型'),('
  • 全部替换

无需在 Find 中添加 \r 或在 Replace 中转义括号。

【讨论】:

  • 这非常接近完美。
  • @theq 那为什么我是第一个支持它的人?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 2013-09-22
  • 2016-07-30
  • 2010-12-01
相关资源
最近更新 更多