文字列,ボックス,式の間の変換

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]=
文字列にはの改行コードが入れられ2行構成になっている.
In[7]:=
Click for copyable input
Out[7]//FullForm=
等幅のフォントでないと正確に表示できない.
In[8]:=
Click for copyable input
Out[8]=

行モード的な入力だけしかしないのなら,ToStringを使い文字列の変換操作ができる.

StringFormOutputFormに対応した文字列を生成する.
In[9]:=
Click for copyable input
Out[9]//InputForm=
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]=
Hold解除のためReleaseHoldを作用させる.
In[15]:=
Click for copyable input
Out[15]=
SyntaxQ["string"]文字列の式が文法的に正確しいWolfram言語の入力かどうか検査する
SyntaxLength["string"]文字列が式を表すものとして,先頭からどの位置の文字までが文法的に正確な式の要素を表しているか調べる

文字列としての入力式の正確性の判定

式の変換関数ToExpressionは,どのような内容の文字列であれ,とりあえずは式として解釈を進める.このため,式として本来機能しない間違った記述文を与えると,変換不能になり失敗のメッセージが表示され,$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で式に誤りがないか調べる.
In[18]:=
Click for copyable input
Out[18]=
誤りがどこで起ったかSyntaxLengthで調べる.位置3で誤りが検出されたことが分かる.
In[19]:=
Click for copyable input
Out[19]=
SyntaxLengthを使うと文字列の長さより大きい値が返ってくる.これは,入力した部分に関しては問題がないが,それに続くはずの要素が見付からなかったことを意味している.
In[20]:=
Click for copyable input
Out[20]=