文字列の操作

Wolfram言語は,文字列の操作のための関数を数多く備えている.その多くは文字列を複数の文字の並びとして扱い,機能的にはリスト操作の関数に対応している.

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 から ~ 番目の文字を抽出し新たな文字列を構成する
StringDrop[s,n]文字列 s から最初の n 文字を除去し残った文字を抽出し新たな文字列を構成する
StringDrop[s,{n1,n2}]文字列 s から ~ 番目の文字を除去し残った文字を抽出し新たな文字列を構成する

文字列の部分抽出

文字列の抽出関数StringTakeStringDropはリストの抽出関数であるTakeDropに対応している.TakeDropと同じように,引数の指定の仕方はWolfram言語標準規定に準拠している.したがって,文字列末尾から数えた文字の位置は負の数で表す.また,文字列の先頭位置はである.

長い文字列を入力しておく.
In[4]:=
Click for copyable input
Out[4]=
から最初の文字を5個抽出する.
In[5]:=
Click for copyable input
Out[5]=
今度は,の先頭から数えて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,}]文字列 s ~ 番目の各位置に新たな文字列 を挿入する

文字列の挿入

文字列 sn 番目に新たな文字列 snew を挿入するには書式StringInsert[s,snew,n]を使う.

文字列の4番目に文字列を挿入することで文字列を新たに作る.
In[8]:=
Click for copyable input
Out[8]=
挿入位置に負の値を指定すると末尾から数えた位置を指定することになる.
In[9]:=
Click for copyable input
Out[9]=
3つの複数位置にの同じ文字列を挿入する.
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 の部分文字列を対応する で置換する

文字列の部分的置換

2番目から6番目までの文字をに置き換える.
In[12]:=
Click for copyable input
Out[12]=
2つの部分をに置き換える.
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 において各部分列 の開始位置と終了位置をリスト出力する

文字列の部分検索

StringPositionを使い,1つの被検索文字列に別の検索文字列が含まれているか照合できる.検索文字列と同じ内容を持つ範囲(複数可)がリストとして返される.範囲とは開始点と終了点の位置のことである.このリスト出力による範囲指定の仕方はStringTakeStringDropStringReplacePartで使われる指定法と同じである.

文字列の中に部分列があるかどうか調べる.あると,その範囲がリストで返される.
In[15]:=
Click for copyable input
Out[15]=
第1番目のがある範囲だけに限定する.
In[16]:=
Click for copyable input
Out[16]=
今度は,の両方がある場所を示す.デフォルトでは重複するものが含まれる.
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,}]任意の の出現回数を数える
StringFreeQ[s,sub]ssub が含まれていないかどうかを検証する
StringFreeQ[s,{sub1,sub2,}]s が全く含まれていないかどうかを検証する

部分文字列の検証

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

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

文字列と同じ部分のすべてが置換文字列に置き換わる.
In[20]:=
Click for copyable input
Out[20]=
今度は,で置換し,で置換する.
In[21]:=
Click for copyable input
Out[21]=
被検索文字列における最初のの部分はの部分と重なっているので置換の対象にならない.
In[22]:=
Click for copyable input
Out[22]=

StringReplaceは,文字列を左から右へスキャンし,できる限りすべての置換を行い,結果の文字列を返す.しかし,場合によっては1文字列につき置換を1つだけ行うことが可能な場合をすべて考慮することも有効である.StringReplaceListは,可能な限りの単一の置換の全結果をリストで与える.

これは,各を置換した結果のリストを与える.
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,}] のところで分割する
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,}] を対応する の位置に挿入する

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

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

文字列の並べ替え

Sortは,標準的順序(アルファベット順)に並べ替える.
In[29]:=
Click for copyable input
Out[29]=
StringTrim[s]s の始めと終りから空白を取り除く
StringTrim[s,patt]最初と最後から patt にマッチする部分文字列を取り除く
文字列の両端から空白を取り除く.
In[30]:=
Click for copyable input
Out[30]//FullForm=
SequenceAlignment[s1,s2]の最適な配列を求める
2つの文字列の最適な配列を求める.
In[31]:=
Click for copyable input
Out[31]=