文字列,ボックス,式の間の変換
| ToString[expr,form] | 式 expr を指定されたテキスト表記の文字列に変換する |
| ToBoxes[expr,form] | 式 expr を指定されたテキスト表記のボックスに変換する |
| ToExpression[input,form] | 文字列またはボックスを指定されたテキスト表記の式に変換する |
| ToString[expr] | OutputFormの文字列に変換する |
| ToBoxes[expr] | StandardFormのボックスに変換する |
| ToExpression[input] | StandardFormの式に変換する |
| In[1]:= |
| Out[1]= |
InputFormの文字列に変換する.
| In[2]:= |
| Out[2]= |
FullFormを使うと引用符が文字列に付く.
| In[3]:= |
Out[3]//FullForm= | |
StandardFormのボックスに対応する文字列が返ってくる.
| In[4]:= |
Out[4]//FullForm= | |
ToBoxesでボックスに変換してみる.
| In[5]:= |
| Out[5]= |
ファイルや外部プログラムのデータを生成する際,通常のキーボード上の文字だけを使う,二次元的な記述が必要とされることがある.これはOutputFormを使って行うことができる.
| In[6]:= |
| Out[6]= |
| In[7]:= |
Out[7]//FullForm= | |
| In[8]:= |
| Out[8]= |
行モード的な入力だけしかしないのなら,ToStringを使い文字列の変換操作ができる.
| In[9]:= |
Out[9]//InputForm= | |
| InputForm | キーボード入力主体の文字列要素からなる表記 |
| StandardForm | 数学記号等の標準的な表示・編集機能に対応した文字列とボックス要素からなる表記(デフォルト形式) |
| TraditionalForm | 慣用的な数学表記に基づいた表示・編集機能に対応した文字列とボックス要素からなる表記 |
式への変換機能(ToExpression)で有効な表記の例
InputFormの式を文字列として入力し,計算できる式に変換する.
| In[10]:= |
| Out[10]= |
StandardFormのボックス記述から計算可能な式に変換する.
| In[11]:= |
| Out[11]= |
TraditionalFormなので,関数として解釈される.
| In[12]:= |
| Out[12]= |
| ToExpression[input,form,h] | 式を生成し,その式に頭部 h を作用させる |
| In[13]:= |
| Out[13]= |
| In[14]:= |
| Out[14]= |
| In[15]:= |
| Out[15]= |
| SyntaxQ["string"] | 文字列の式が文法的に正確しい Mathematica の入力かどうか検査する |
| SyntaxLength["string"] | 文字列が式を表すものとして,先頭からどの位置の文字までが文法的に正確な式の要素を表しているか調べる |
式の変換関数ToExpressionは,どのような内容の文字列であれ,とりあえずは式として解釈を進める.このため,式として本来機能しない間違った記述文を与えると,変換不能になり失敗のメッセージが表示され,$Failedが返ってくる.
式をテキスト形式で入力する.文法的に間違っているので,ToExpressionは変換できない.
ToExpressionで正常な変換をするには Mathematica の認識可能な完全な式でなければいけない.
SyntaxQの機能を使い Mathematica 言語の文法上,文字列が正確に式を表しているか判定できる.SyntaxQの答がFalseであれば間違いがあるので,SyntaxLengthを使い文字列のどこでエラーが起ったか調べる.SyntaxLengthでは文法エラーが起る地点まで検査にパスした文字数が得られる.
SyntaxQで式に誤りがないか調べる.
| In[18]:= |
| Out[18]= |
誤りがどこで起ったかSyntaxLengthで調べる.位置3で誤りが検出されたことが分かる.
| In[19]:= |
| Out[19]= |
SyntaxLengthを使うと文字列の長さより大きい値が返ってくる.これは,入力した部分に関しては問題がないが,それに続くはずの要素が見付からなかったことを意味している.
| In[20]:= |
| Out[20]= |
