字符串、框符和表达式之间的转换

ToString[expr,form]创建一个字符串,表示 expr 的指定文本形式
ToBoxes[expr,form]创建一个框符,表示 expr 的指定文本形式
ToExpression[input,form]通过将一个字符串或框件解释为指定文本形式的输入创建一个表达式
ToString[expr]使用 OutputForm 创建一个字符串
ToBoxes[expr]使用 StandardForm 创建一个框符
ToExpression[input]使用 StandardForm 创建一个表达式

字符串、框符和表达式之间的转换.

这是一个简单的表达式.
In[1]:=
Click for copyable input
Out[1]=
以字符串形式给出表达式的 InputForm.
In[2]:=
Click for copyable input
Out[2]=
FullForm 中,字符串两边显示引号.
In[3]:=
Click for copyable input
Out[3]//FullForm=
给出对应于表达式的 StandardForm 框符的字符串表示.
In[4]:=
Click for copyable input
Out[4]//FullForm=
ToBoxes 生成自身的框符.
In[5]:=
Click for copyable input
Out[5]=

为文件和外部程序生成数据时,有时需要仅用普通键盘字符产生二维形式. 这可以通过使用 OutputForm 实现.

生成一个仅用普通键盘字符的字符串,以二维形式显示表达式.
In[6]:=
Click for copyable input
Out[6]=
该字符串有两行,行间用显式的 新行隔开.
In[7]:=
Click for copyable input
Out[7]//FullForm=
该字符串仅在单空格的字体时正确显示.
In[8]:=
Click for copyable input
Out[8]=

如果仅对一维结构进行操作,可以通过 ToString 利用格式函数进行字符串操作.

生成一个对应于 StringFormOutputForm 的字符串.
InputForm对应于键盘输入的字符串
StandardForm对应于标准二维输入的字符串或框符(默认)
TraditionalForm与传统数学记号相似的字符串或框符

ToExpression 处理的一些形式.

InputForm 字符串创建一个表达式.
In[10]:=
Click for copyable input
Out[10]=
StandardForm 框符创建同一表达式.
In[11]:=
Click for copyable input
Out[11]=
TraditionalForm,这些被解释为函数.
In[12]:=
Click for copyable input
Out[12]=
ToExpression[input,form,h]创建一个表达式,然后由头部 h 封装

创建由特殊头部封装的表达式.

创建一个表达式,然后立即计算.
In[13]:=
Click for copyable input
Out[13]=
使用 StandardForm 规则创建一个表达式,然后将它封装在 Hold.
In[14]:=
Click for copyable input
Out[14]=
可以使用 ReleaseHold 去掉 Hold.
In[15]:=
Click for copyable input
Out[15]=
SyntaxQ["string"]确定一个字符串是否是语法正确的 Wolfram 语言输入
SyntaxLength["string"]测试从字符串开始多长的字符序列在语法上是正确的

测试输出字符串的正确性.

ToExpression 将试图将每个字符串解释为 Wolfram 语言输入. 但如果给出的字符串不能对应于一个语法正确的输入时,它就显示一个信息,并返回 $Failed.

这不是一个语法正确的输入,因此 ToExpression 不将其转换成一个表达式.
In[16]:=
Click for copyable input
Out[16]=
ToExpression 要求字符串对应于一个完整的 Wolfram 语言表达式.
In[17]:=
Click for copyable input
Out[17]=

可使用函数 SyntaxQ 测试一个特定的字符串是否对应于语法正确的 Wolfram 语言输入. 如果 SyntaxQ 返回False,可使用 SyntaxLength 找到错误发生的位置. SyntaxLength 的返回值是语法错误发生之前成功运行的字符数.

SyntaxQ 表明这个字符串不对应于语法正确的 Wolfram 语言输入.
In[18]:=
Click for copyable input
Out[18]=
SyntaxLength 表明错误发生在字符串的第三个字符后.
In[19]:=
Click for copyable input
Out[19]=
这里 SyntaxLength 返回一个大于字符串长度的值,表明到目前为止输入正确,但需要继续.
In[20]:=
Click for copyable input
Out[20]=