次の方法で共有


Visual Basic での文字列の基本

Stringデータ型は、一連の文字を表します (それぞれ、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!"""

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

文字列リテラルには、複数の行を含めることができます。

Dim x = "hello  
world"  

結果の文字列には、文字列リテラル (vbcr、vbcrlf など) で使用した改行シーケンスが含まれます。 以前の回避策を使用する必要がなくなりました。

Dim x = <xml><![CDATA[Hello  
World]]></xml>.Value  

文字列内の文字

文字列は一連の 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 プロパティを使用して、特定の文字列の長さを取得することもできます。 文字列に対して複数の配列型操作を実行する必要がある場合は、文字列のChar関数を使用して、ToCharArray インスタンスの配列に変換できます。 例えば次が挙げられます。

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

変数myArrayには、Charの文字を表すmyString値の配列が含まれるようになりました。

文字列の不変性

文字列は 不変です。つまり、作成後に値を変更することはできません。 ただし、文字列変数に複数の値を割り当てないようにすることはできません。 次の例を確認してください。

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

ここでは、値を指定して文字列変数が作成され、その値が変更されます。

具体的には、最初の行では、 String 型のインスタンスが作成され、 This string is immutable値が指定されます。 例の 2 行目では、新しいインスタンスが作成され、 Or is it?値が指定され、文字列変数は最初のインスタンスへの参照を破棄し、新しいインスタンスへの参照を格納します。

他の組み込みデータ型とは異なり、 String は参照型です。 参照型の変数を関数またはサブルーチンに引数として渡すと、文字列の実際の値ではなく、データが格納されているメモリ アドレスへの参照が渡されます。 したがって、前の例では、変数の名前は変わりませんが、新しい値を保持する String クラスの新しいインスタンスを指しています。

こちらも参照ください