文字列型 (String) (Visual Basic)
0 ~ 65,535 の値を持つ 16 ビット (2 バイト) の符号なしコード ポイントのシーケンスを格納します。 各コード ポイント (文字コード) は、単一の Unicode 文字を表します。 文字列型には、0 ~約 20 億個 (2^31) までの Unicode 文字を格納できます。
解説
String データ型を使用すると、Char() の配列管理のオーバーヘッド、つまり Char 要素の配列を管理するオーバーヘッドをかけることなく、複数の文字を格納できます。
String の既定値は Nothing (null 参照) です。 これは空の文字列 (値 "") とは異なるので注意してください。
Unicode 文字
Unicode の最初の 128 個のコード ポイント (0 ~ 127) は、標準の英語版キーボードの文字と記号に 対応します。 これら最初の 128 個のコード ポイントは、ASCII 文字セットで定義された文字と同じです。 次の 128 個のコード ポイント (128 ~ 255) は、ラテン語系のアルファベット、アクセント記号、通貨記号、分数などの特殊文字を表します。 Unicode は、その他のコード ポイント (256-65535) を使用してさまざまな記号を表します。 たとえば、各言語の文字、発音符、数学記号、技術記号などの記号を表します。
String 変数に含まれる個々の文字に対して IsDigit や IsPunctuation などのメソッドを使用すると、Unicode の分類を判別できます。
書式の要件
String のリテラルは、二重引用符 (" ") で囲む必要があります。 文字列の 1 文字として二重引用符を含める場合は、二重引用符を 2 つ続けて ("") 記述する必要があります。 次に例を示します。
Dim j As String = "Joe said ""Hello"" to me."
Dim h As String = "Hello"
' The following messages all display the same thing:
' "Joe said "Hello" to me."
MsgBox(j)
MsgBox("Joe said " & """" & h & """" & " to me.")
MsgBox("Joe said """ & h & """ to me.")
連続した二重引用符のうち、文字列に含まれる二重引用符は、String のリテラルを開始および終了する二重引用符と関係ないことに注意してください。
文字列操作の概要
文字列を String 変数に代入すると、その文字列は変更不可になります。つまり、文字列の長さや内容を変更できなくなります。 何らかの方法で文字列を変更すると、Visual Basic は新しい文字列を作成し、変更前の文字列を破棄します。 これにより、String 変数は新しい文字列をポイントするようになります。
String 変数の内容は、さまざまな文字列関数を使って操作できます。 次に Left 関数の例を示します。
Dim S As String = "Database"
' The following statement sets S to a new string containing "Data".
S = Microsoft.VisualBasic.Left(S, 4)
別のコンポーネントで作成された文字列には、先頭または末尾に空白が埋め込まれていることがあります。 このような文字列を受け取った場合に、Trim、LTrim、および RTrim の各関数を使用して空白を削除できます。
文字列操作の詳細については、「Visual Basic における文字列」を参照してください。
プログラミングのヒント
負の数。 String に格納される文字には符号がないため、負の値を表現できないことに注意してください。 どのような場合でも、String を使って数値を格納しないでください。
相互運用のための注意事項。 オートメーション オブジェクトや COM オブジェクトなど、.NET Framework 向けに作成されていないコンポーネントを使用する場合、他の環境では文字列の各文字のデータ幅が異なる (8 ビット) ことに注意してください。 Visual Basic コードを作成する際、8 ビット文字の文字列引数をこのようなコンポーネントに渡す場合は、引数を String ではなく、Byte() として、つまり Byte 要素の配列として宣言してください。
型文字。 任意の識別子に識別子の型文字 $ を付けると、String データ型に変換されます。 String にはリテラルの型文字はありません。 ただし、コンパイラでは、二重引用符 (" ") で囲まれたリテラルは文字列型 (String) として処理されます。
Framework の型。 .NET Framework において対応する型は、System.String クラスです。
参照
処理手順
方法: unsigned 型を使用して正の整数のストレージを最適化する (Visual Basic)
方法: 符号なしの型を使用する Windows の機能を呼び出す (Visual Basic)