次の方法で共有


Visual Basic における文字列の基本

文字列型 (String) は、一連の文字を表します。文字列型のそれぞれの文字は、char 型 (Char) のインスタンスを表します。 ここでは、Visual Basic における文字列の基本的な考え方について説明します。

文字列変数

文字列型のインスタンスには、一連の文字を表すリテラル値を代入できます。 次に例を示します。

Dim MyString As String
MyString = "This is an example of the String data type"

文字列型 (String) の変数には、文字列に評価される式を代入することもできます。 次に例を示します。

Dim OneString As String 
Dim TwoString As String
OneString = "one, two, three, four, five" 
' Evaluates to "two".
TwoString = OneString.Substring(5, 3)
OneString = "1" 
' Evaluates to "11".
TwoString = OneString & "1"

文字列型 (String) の変数にリテラルを代入する場合は、二重引用符 ("") で囲む必要があります。 このため、文字列内の二重引用符は、二重引用符で表現できません。 たとえば、次のコードはコンパイラ エラーになります。

Dim myString As String 

' This line would cause an error. 
' myString = "He said, "Look at this example!""

このコードがエラーになるのは、2 つ目の二重引用符の後でコンパイラが文字列を終了し、残りの文字列がコードとして解釈されるためです。 この問題を解決するため、Visual Basic は二重引用符が文字列リテラルに 2 つ続けて出現した場合に、文字列内の 1 つの二重引用符として解釈します。 次の例は、文字列に二重引用符を含める正しい方法を示しています。

' The value of myString is: He said, "Look at this example!"
myString = "He said, ""Look at this example!"""

次の例では、Look という単語の前にある 2 つの二重引用符が、文字列内の 1 つの二重引用符になります。 行末の 3 つの二重引用符は、文字列内の 1 つの二重引用符と文字列の終了文字を表しています。

文字列の文字

文字列は一連の char 型 (Char) の値と見なすことができるため、文字列型 (String) には、文字列を配列と同じように操作できる組み込み関数があります。 .NET Framework のすべての配列と同様に、これらの配列でもインデックス番号が 0 から始まります。 Chars プロパティで文字列内の位置を指定すると、文字列内の特定の文字を参照できます。 次に例を示します。

Dim myString As String = "ABCDE" 
Dim myChar As Char 
' The value of myChar is "D".
myChar = myString.Chars(3)

上の例では、Chars プロパティによって文字列の 4 番目の文字 D が返され、myChar に代入されています。 また、Length プロパティを使うと、特定の文字列の長さを調べることができます。 文字列に対して配列型の操作をいくつも実行する必要がある場合は、文字列の ToCharArray 関数を使用して char 型 (Char) のインスタンスの配列に文字列を変換します。 次に例を示します。

Dim myString As String = "abcdefghijklmnop" 
Dim myArray As Char() = myString.ToCharArray

これにより、変数 myArray の内容は、myString の各文字を表す char 型 (Char) の値の配列になります。

文字列の不変性

文字列は不変です。つまり、いったん作成してしまうと、後から値を変更できません。 ただし、だからといって文字列変数に 2 つ以上の値を代入できないわけではありません。 次に例を示します。

Dim myString As String = "This string is immutable"
myString = "Or is it?"

この例では文字列変数が作成され、値が代入された後、その値が変更されています。

具体的に説明すると、最初の行で文字列型 (String) のインスタンスが作成され、This string is immutable という値が代入されています。 2 行目では、新しいインスタンスが作成されて Or is it? という値が代入されます。その後、文字列変数は最初のインスタンスへの参照を破棄し、新しいインスタンスへの参照を格納します。

ほかの組み込みデータ型とは違って、文字列型 (String) は参照型です。 参照型の変数が引数として関数やサブルーチンに渡されると、文字列の実際の値ではなく、データが格納されているメモリ アドレスへの参照が渡されます。 したがって、上の例では、変数の名前は同じですが、参照されているのは String クラスの新しい別のインスタンスであり、この新しいインスタンスが新しい値を保持しています。

参照

関連項目

文字列型 (String) (Visual Basic)

文字型 (Char) (Visual Basic)

その他の技術情報

Visual Basic の文字列の概要

.NET Framework での基本的な文字列操作