Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica >

文字列の操作

Mathematica は,文字列の操作のための関数を数多く備えている.その多くは文字列を複数の文字の並びとして扱い,機能的にはリスト操作の関数に対応している.
s1<>s2<>... または StringJoin[{s1,s2,...}]
複数の文字列をつなぎ合せる
StringLength[s]文字列を構成している文字の総数(長さ)を返す
StringReverse[s]文字の並び順を反対にする

文字列の一括操作

結合記号<>を使い文字列をつなぎ合せる.文字列はいくつあっても構わない.
In[1]:=
Click for copyable input
Out[1]=
StringLengthを使って文字列の長さを調べる.
In[2]:=
Click for copyable input
Out[2]=
StringReverseを使い構成文字の並び順を逆にする.
In[3]:=
Click for copyable input
Out[3]=
StringTake[s,n]文字列 s から最初の n 文字を抽出し新たな文字列を構成する
StringTake[s,{n}]文字列 s の先頭から数えて n 番目の文字を抽出し長さ1の文字列を構成する
StringTake[s,{n1,n2}]文字列 s から n1 ~ n2 番目の文字を抽出し新たな文字列を構成する
StringDrop[s,n]文字列 s から最初の n 文字を除去し残った文字を抽出し新たな文字列を構成する
StringDrop[s,{n1,n2}]文字列 s から n1 ~ n2 番目の文字を除去し残った文字を抽出し新たな文字列を構成する

文字列の部分抽出

文字列の抽出関数StringTakeStringDropはリストの抽出関数であるTakeDropに対応している.TakeDropと同じように,引数の指定の仕方はMathematica 標準規定に準拠している.したがって,文字列末尾から数えた文字の位置は負の数で表す.また,文字列の先頭位置は1である.
長い文字列を入力しておく.
In[4]:=
Click for copyable input
Out[4]=
alphaから最初の文字を5個抽出する.
In[5]:=
Click for copyable input
Out[5]=
今度は,alphaの先頭から数えて5番目の文字だけを抽出する.
In[6]:=
Click for copyable input
Out[6]=
後ろから数えて2〜10番目の文字を取り除いて残った文字を抽出する.
In[7]:=
Click for copyable input
Out[7]=
StringInsert[s,snew,n]文字列sn 番目の位置に新たな文字列snew を挿入する
StringInsert[s,snew,{n1,n2,...}]
文字列sn1 ~ n2 番目の各位置に新たな文字列 snew を挿入する

文字列の挿入

文字列sn 番目に新たな文字列snew を挿入するには書式StringInsert[s, snew, n]を使う.
文字列の4番目に文字列"XX"を挿入することで文字列を新たに作る.
In[8]:=
Click for copyable input
Out[8]=
挿入位置に負の値を指定すると末尾から数えた位置を指定することになる.
In[9]:=
Click for copyable input
Out[9]=
3つの複数位置に"XXX"の同じ文字列を挿入する.
In[10]:=
Click for copyable input
Out[10]=
Riffleを使い単語の間にスペースを挿入する.
In[11]:=
Click for copyable input
Out[11]=
StringReplacePart[s,snew,{m,n}]
文字列 s において m ~ n 番目の文字を新たな文字列 snew に置換する
StringReplacePart[s,snew,{{m1,n1},{m2,n2},...}]
文字列 s の数個の部分文字列を snew で置換する
StringReplacePart[s,{snew1,snew2,...},{{m1,n1},{m2,n2},...}]
文字列 s の部分文字列を対応する snewi で置換する

文字列の部分的置換

2番目から6番目までの文字を"XXX"に置き換える.
In[12]:=
Click for copyable input
Out[12]=
2つの部分を"XXX"に置き換える.
In[13]:=
Click for copyable input
Out[13]=
今度は,置換部分は2つだが,別々の文字列で置換する.
In[14]:=
Click for copyable input
Out[14]=
StringPosition[s,sub]文字列 s において部分列 sub が現れる開始位置と終了位置をリスト出力する
StringPosition[s,sub,k]文字列 s において現れる最初の k 個までの部分列 sub の開始位置と終了位置をリスト出力する
StringPosition[s,{sub1,sub2,...}]
文字列 s において各部分列 subiの開始位置と終了位置をリスト出力する

文字列の部分検索

StringPositionを使い,1つの被検索文字列に別の検索文字列が含まれているか照合できる.検索文字列と同じ内容を持つ範囲(複数可)がリストとして返される.範囲とは開始点と終了点の位置のことである.このリスト出力による範囲指定の仕方はStringTakeStringDropStringReplacePartで使われる指定法と同じである.
文字列の中に部分列"abc"があるかどうか調べる.あると,その範囲がリストで返される.
In[15]:=
Click for copyable input
Out[15]=
第1番目の"abc"がある範囲だけに限定する.
In[16]:=
Click for copyable input
Out[16]=
今度は,"abc""cd"の両方がある場所を示す.デフォルトでは重複するものが含まれる.
In[17]:=
Click for copyable input
Out[17]=
これは重複するものを含まない.
In[18]:=
Click for copyable input
Out[18]=
StringCount[s,sub]s 中の sub の出現回数を数える
StringCount[s,{sub1,sub2,...}]任意の subi の出現回数を数える
StringFreeQ[s,sub]ssub が含まれていないかどうかを検証する
StringFreeQ[s,{sub1,sub2,...}]ssubi が全く含まれていないかどうかを検証する

部分文字列の検証

これはどちらかの文字列の出現回数を数える.デフォルトで,重複は含まれない.
In[19]:=
Click for copyable input
Out[19]=
StringReplace[s,sb->sbnew]文字列 s において部分列 sb を文字列 sbnew で置換する
StringReplace[s,{sb1->sbnew1,sb2->sbnew2,...}]
sbi を対応する sbnewi で置換する
StringReplace[s,rules,n]最高で n 回置換する
StringReplaceList[s,rules]可能な置換を行って得られた文字列のリストを与える
StringReplaceList[s,rules,n]最高で n 個の結果を与える

変換規則を使った文字列の部分的置換

文字列aと同じ部分のすべてが置換文字列XXに置き換わる.
In[20]:=
Click for copyable input
Out[20]=
今度は,abcYで置換し,dXXXで置換する.
In[21]:=
Click for copyable input
Out[21]=
被検索文字列における最初のcdeの部分はabcの部分と重なっているので置換の対象にならない.
In[22]:=
Click for copyable input
Out[22]=
StringReplaceは,文字列を左から右へスキャンし,できる限りすべての置換を行い,結果の文字列を返す.しかし,場合によっては1文字列につき置換を1つだけ行うことが可能な場合をすべて考慮することも有効である.StringReplaceListは,可能な限りの単一の置換の全結果をリストで与える.
これは,各aを置換した結果のリストを与える.
In[23]:=
Click for copyable input
Out[23]=
これは,すべての可能な単一置換の結果を示す.
In[24]:=
Click for copyable input
Out[24]=
StringSplit[s]s をホワイトスペースで区切られた部分文字列に分割する
StringSplit[s,del]del のところで分割する
StringSplit[s,{del1,del2,...}]deli のところで分割する
StringSplit[s,del,n]最高で n 個の部分文字列に分割する

文字列の分割

空白ごとに文字列を分割する.
In[25]:=
Click for copyable input
Out[25]=
これは"::"ごとに文字列を分割する.
In[26]:=
Click for copyable input
Out[26]=
これはコロンあるいは空白ごとに文字列を分割する.
In[27]:=
Click for copyable input
Out[27]=
StringSplit[s,del->rhs]各区切り位置に rhs を挿入する
StringSplit[s,{del1->rhs1,del2->rhs2,...}]
rhsi を,対応する deli の位置に挿入する

文字列分割の区切りの置き換え

これは,各::区切りに{x, y}を挿入する.
In[28]:=
Click for copyable input
Out[28]=
Sort[{s1,s2,s3,...}]文字列のリストを並べ替える

文字列の並べ替え

Sortは,標準的順序(アルファベット順)に並べ替える.
In[29]:=
Click for copyable input
Out[29]=
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team