我有以下字符串:

"{f[{-1 + x, y}]; f[{1 + x, y}]; f[{x, 1 + y}]}"

我想将其转换为表达式。直接应用 ToExpression 只给出最后一个,即 {f[{x, 1 + y}]} 。如何获取整个列表?

最佳答案

您可以查看 ToExpression 的文档以找到它的第三个参数,然后使用

ToExpression["{f[{-1 + x, y}]; f[{1 + x, y}]; f[{x, 1 + y}]}", InputForm, Hold]

以防止评估。

几个转换表达式或提取部分的函数( ExtractLevel 等)可以选择将提取的部分包装在任意函数中。一个常见的用途是将它们包装在 Hold 中,以防止评估。

编辑: 请注意,您的表达式不是列表。这是一个 CompoundExpression 。您可能正在寻找
ToExpression["{f[{-1 + x, y}]; f[{1 + x, y}]; f[{x, 1 + y}]}", InputForm, Hold] /. CompoundExpression -> List // ReleaseHold

你能解释一下你想要实现的目标以及你从哪里得到字符串的吗?

关于wolfram-mathematica - 使用 ToExpression[] 将字符串转换为表达式时,如何防止计算结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8689697/

10-12 23:10