実は、この記事で扱う「文字列を1文字ずつ分割する」処理はとても簡単ですが、ACM の問題ではよく必要になります。たとえば順列・組み合わせの問題では、計算の前に文字列を文字に分割しなければなりません。シーザー暗号にも同じ処理が使われます。以下では VB.NET で例を示しますが、ほかのプログラミング言語でも同じことができ、原理は同じです。

VB には Mid という関数があります。これは開始位置と長さを指定して文字列の一部を取り出す関数です。たとえば Mid(“abcde”,1,1) では “a” が得られます。

Mid 関数の説明

Mid(分割する文字列, 開始位置, 長さ)

分割する文字列は、分割したい文字列または変数のことです。説明するまでもないでしょう。

開始位置は、分割を始める文字の位置です。0 にはできないので注意してください。

長さは、切り取る文字数です。

例:

dim x as string
x="linroex"
msgbox(mid(x,1,3))
この例では、変数 x の先頭から 3 文字を切り取っています。

Mid 関数を For ループと組み合わせると、文字列を1文字ずつに分割できます。

文字列を1文字ずつ分割する(VB):

Dim xin As String = TextBox1.Text
Dim xout() As String
ReDim xout(Len(xin))
For x = 1 To Len(xin)
    xout(x - 1) = Mid(xin, x, 1)
    ListBox1.Items.Add(xout(x - 1))
Next
プロジェクトファイル(VS2010):Xun6 |4Shared |Box.net