VB.NETで数値と文字列を変換する方法を徹底解説!CStrとToStringの使い方
生徒
「VB.NETで計算した結果を画面に表示しようとしたら、エラーが出てしまいました。数字を文字として扱いたいときはどうすればいいんですか?」
先生
「それは『型変換(かたへんかん)』が必要な場面ですね。VB.NETでは、数値と文字列を明確に区別して扱うルールがあるんです。」
生徒
「型変換…難しそうですね。どうやって書けばいいんでしょうか?」
先生
「大丈夫ですよ。CStr関数やToStringメソッドを使えば、初心者の方でも簡単に変換できます。詳しく見ていきましょう!」
1. VB.NETの数値と文字列の違いとは?
プログラミングの世界には、データの種類を示す型(かた)という概念があります。パソコンに慣れていない方向けに例えると、型とは「データの入れ物」のようなものです。例えば、計算に使うための「数字」を入れる箱と、名前やメッセージなどの「文字」を入れる箱は、見た目が同じ数字であっても、パソコンの中では全く別物として扱われます。
VB.NETでよく使われるのは、整数を入れるInteger(インテジャー)型と、文字を入れるString(ストリング)型です。算数の計算をしたいときは数値型を使いますが、その結果をメッセージとして表示したり、他の文字とくっつけたりしたいときには、数値を文字列に変換する作業が必要になります。この作業を型変換、または専門用語でキャストと呼びます。
2. 最も手軽な変換!CStr関数の使い方
初心者が最初に覚えるのに最適なのが、CStr(シー・ストリング)関数です。これは「Convert to String(文字列へ変換)」の略で、括弧の中に書いた数値を一瞬で文字列に変えてくれます。非常に短く書けるので、プログラムを書き始めたばかりの方に人気があります。
例えば、計算結果の「100」という数値を、「100円」という文字として表示したい場合に便利です。実際のプログラムコードを見てみましょう。
Dim price As Integer = 500
Dim message As String = CStr(price) & "円です"
Console.WriteLine(message)
実行結果は以下のようになります。
500円です
このコードでは、数値の500をCStrで文字に変換し、その後に「円です」という文字をくっつけています。もし変換せずにそのままくっつけようとすると、パソコンが「数字と文字をどうやって足せばいいの?」と混乱してエラーを出すことがあるため、この変換はとても重要です。
3. オブジェクト指向の基本!ToStringメソッド
次に紹介するのが、ToString(トゥー・ストリング)メソッドです。これは現代的なプログラミングで非常によく使われる書き方です。VB.NETでは、あらゆるデータ(オブジェクト)が自分自身を文字列に変える能力を持っており、その能力を呼び出すのがToStringメソッドです。
使い方は簡単で、変数名の後ろに「.ToString()」と付けるだけです。まるで魔法の呪文を唱えるような感覚ですね。以下の例では、点数を表す数値を文字列に変換しています。
Dim score As Integer = 95
Dim resultText As String = score.ToString()
Console.WriteLine("あなたの点数は " & resultText & " 点です")
実行結果は以下のようになります。
あなたの点数は 95 点です
CStr関数とToStringメソッド、どちらを使っても基本的には同じ結果が得られますが、ToStringメソッドには「書式設定」という強力な追加機能があるため、プロの現場ではこちらが好まれる傾向にあります。
4. ToStringで数字をカンマ区切りにする方法
ToStringメソッドのすごいところは、ただ文字に変えるだけでなく、見た目を整えることができる点です。例えば、金額を表示するときに「1,000,000」のようにカンマを入れたいことがありますよね。これを手作業で行うのは大変ですが、ToStringを使えば一瞬です。
括弧の中に特定の記号(書式指定子と言います)を入れることで、表示形式を自由自在に操ることができます。お金の計算をするプログラムでは必須のテクニックです。
Dim money As Integer = 1234567
' "N0"を指定すると、3桁ごとにカンマを入れてくれます
Dim formattedMoney As String = money.ToString("N0")
Console.WriteLine("所持金は " & formattedMoney & " 円です")
実行結果は以下のようになります。
所持金は 1,234,567 円です
このように、単なる変換以上のことができるのがToStringメソッドの強みです。初心者の方は、まずは基本の変換を覚え、慣れてきたらこのカンマ区切りにも挑戦してみてください。
5. 小数点以下の桁数を指定して変換する
数値には整数だけでなく、小数点を含むDouble(ダブル)型などのデータもあります。科学計算や家計簿アプリなどでは、小数点第何位まで表示するかを細かく決めたい場面が出てきます。ここでもToStringメソッドが活躍します。
「F2」という指定を使えば、小数点以下2桁までを表示し、それ以降は四捨五入するといった操作が自動的に行われます。手動で計算しなくて済むので、ミスが減り、非常に効率的です。
Dim pi As Double = 3.141592
' "F2"を指定すると、小数点以下2桁まで表示します
Dim shortPi As String = pi.ToString("F2")
Console.WriteLine("円周率は約 " & shortPi & " です")
実行結果は以下のようになります。
円周率は約 3.14 です
このように、データを文字列に変換するタイミングで見栄えを整えるのが、スマートなプログラムの作り方です。ユーザー(アプリを使う人)にとって、読みやすい表示を心がけることが大切です。
6. 日付データを文字列に変換するテクニック
数値の変換とは少し逸れますが、実務で非常に多いのが日付(DateTime型)の変換です。日付データもそのままでは計算用のデータなので、私たちが読みやすい「2025年1月1日」といった形式にするには、やはりToStringメソッドを使います。
日付の場合は「yyyy」で年、「MM」で月、「dd」で日を指定できます。これも文字列変換の応用編として知っておくと、カレンダーアプリや日記帳のようなプログラムを作るときにとても役立ちます。
Dim today As DateTime = DateTime.Now
' 今日の日付を「年/月/日」の形式で文字に変えます
Dim dateString As String = today.ToString("yyyy/MM/dd")
Console.WriteLine("今日は " & dateString & " です")
この柔軟な変換能力こそが、ToStringが推奨される大きな理由の一つです。数値であっても日付であっても、同じToStringという名前の命令で変換できるのは、覚えることが少なくて済むので助かりますね。
7. エラーを防ぐ!なぜ型変換が必要なのか
最後に、なぜわざわざこんな面倒な変換をしなければならないのか、その理由をお話しします。VB.NETには「暗黙の型変換」という、パソコンが気を利かせて勝手に型を変えてくれる機能もあります。しかし、これに頼りすぎると、意図しない計算結果になったり、ある日突然プログラムが動かなくなったりする原因になります。
例えば、「10」という文字と「20」という数字を足そうとしたとき、結果が「30」になるのか、文字がくっついて「1020」になるのか、パソコンによって判断が分かれることがあります。これを避けるために、私たちプログラマが「これは文字列として扱ってね」とCStrやToStringを使って明示的に命令する必要があるのです。
これを習慣にすることで、バグ(プログラムの不具合)の少ない、高品質なシステムを作ることができるようになります。最初は手間に感じるかもしれませんが、型を意識することは、初心者から一歩脱却するための大切なステップです。