gpt4 book ai didi

parsing - 如何在粘贴时自动转换 Part [[ 双括号 ]]?

转载 作者:行者123 更新时间:2023-12-04 12:49:40 27 4
gpt4 key购买 nike

我最讨厌的一点是对 Part 使用双方括号而不是单个字符 \[LeftDoubleBracket]\[RightDoubleBracket] .我希望在将纯文本代码(例如来自 StackOverflow)粘贴到 Mathematica Notebook 时自动替换这些代码。我一直无法配置它。

可以用 ImportAutoReplacements 做吗?或其他自动方法(首选),或者我是否需要使用“粘贴表格数据调色板”之类的方法,引用 here ?

无论哪种方式,我都不擅长字符串解析,我想学习处理括号计数的最佳方法。

Sjoerd 给了 Defer和 Simon 给了 Ctrl+Shift+N 这两者都会导致 Mathematica 自动格式化代码。这些都是不错的选择。

我仍然对自动和/或尽可能多地保留原始代码的方法感兴趣。例如,维护前缀 f@1 , 中缀 1 ~f~ 2 , 和后缀 1 // f以其原始形式发挥作用。

这个问题的一个小节被转发为 Matching brackets in a string并收到了几个很好的答案。

最佳答案

不是真正的答案,而是 thread使用一次按键输入双 [[ ]] 对(光标位于两对之间)发生在几周前的数学组上。它没有帮助我,但对于其他人来说,这显然是一个解决方案。

编辑
为了更好地解决我稍微偏离主题的第一 react ,这里有一个模式替换似乎可以完成这项工作(尽管我自己很难理解为什么它应该是 b 而不是 b_;后者不起作用):

Defer[f[g[h[[i[[j[2], k[[1, m[[1, n[2]]]]]]]]]]]] /. 
HoldPattern[Part[b, a_]] -> HoldPattern[b\[LeftDoubleBracket]a\[RightDoubleBracket]]

enter image description here

我把自动化部分留给你。

编辑 2
我发现,如果您将上述规则添加到 ImportAutoReplacements 并将您的 SO 代码粘贴到笔记本中的 Defer[] 并对其进行评估,您最终会得到一个带有双括号的可用表单,该表单可以用作其他地方的输入。

编辑 3
正如 Mr.Wizard 在下面的评论中无形地指出的那样,替换规则不是必需的。 Defer 是自己做的!引用比尔沃特森的话说,科学进步是“笨蛋”。

Boink

编辑 4
陪审团仍在 Defer 上。它有一些特殊的副作用,并且不适用于所有表达式。在 the toolbag question 中尝试“粘贴表格数据调色板”例如。在 Defer 中粘贴这段代码并执行给了我这个:
palette

它在来自同一线程的另一个代码片段中工作得更好:

enter image description here

第二部分是通过编辑第一个块的输出将其转换为输入后的外观(基本上,我插入了几个返回来恢复格式)。这将它变成输入。请注意所有双括号都变成了正确的对应符号,但也要注意 ReleaseHold 的位置变化。

关于parsing - 如何在粘贴时自动转换 Part [[ 双括号 ]]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5461688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com