VB.NETで文字列を綺麗に整える!String.Formatと文字列補間の使い方
生徒
「変数に入っている名前や数字を、決まった文章の中に埋め込んで表示したいのですが、&で繋ぎすぎるとコードが読みにくくなってしまいます。」
先生
「それはプログラミング初心者が必ず通る悩みですね。VB.NETには、文字列を読みやすく整える『フォーマット』という便利な機能があるんですよ。」
生徒
「フォーマット…難しそうですが、私でも使えますか?」
先生
「もちろんです!昔ながらのString.Formatと、最新の文字列補間という二つの方法を分かりやすく解説しますね。」
1. 文字列フォーマットとは何か?
VB.NETのプログラムを作っていると、文章の一部だけを状況に合わせて書き換えたい場面がよくあります。例えば「田中さん、こんにちは」という挨拶文の「田中」の部分を、ログインした人の名前に変えるような場合です。これを文字列のフォーマット(書式設定)と呼びます。
パソコンを触ったことがない方には、「穴あきの文章(テンプレート)」を用意して、その穴に後から好きな言葉をパズルのようにはめ込んでいく作業だと想像してもらうと分かりやすいでしょう。この方法を使うと、文章の全体像が把握しやすくなり、書き間違いも減らすことができます。VB.NETでは、データの種類(数値や日付など)に合わせて見栄えを整えることも同時に行えるため、非常に重宝される技術です。
2. 定番のString.Format関数の基本
まず紹介するのは、古くから使われているString.Format(ストリング・ドット・フォーマット)関数です。この方法は、文章の中に「{0}」や「{1}」といった番号付きの穴(プレースホルダーと呼びます)を作り、そこに後ろから値を流し込みます。
番号は必ず「0」から始まるというプログラミング特有のルールがありますが、慣れてしまえば簡単です。複数の変数を一度に埋め込みたいときに、文章の形が崩れないので非常に読みやすいコードになります。
Dim userName As String = "田中"
Dim age As Integer = 25
' {0}にuserNameが、{1}にageが入ります
Dim message As String = String.Format("{0}さんは、現在{1}歳です。", userName, age)
Console.WriteLine(message)
実行結果は以下のようになります。
田中さんは、現在25歳です。
このように、文章の中に変数が混ざっても、どこに何が入るのかが一目で分かります。これがフォーマット機能の最大のメリットです。
3. 最新で便利な「文字列補間」の使い方
最近のVB.NETで最も推奨されているのが、文字列補間(Interpolated Strings)という書き方です。これは、ダブルクォーテーションの前に「$」記号を付けるだけで、文章の中に直接変数名を書き込める魔法のような機能です。
先ほどのString.Formatよりもさらに直感的で、書く量も少なくて済みます。変数の中身がそのまま文章に溶け込むようなイメージなので、初心者の方にはこちらの方が覚えやすいかもしれません。実際の書き方を見てみましょう。
Dim fruit As String = "りんご"
Dim count As Integer = 5
' $を先頭に付けると、{}の中に変数を直接書けます
Dim text As String = $"{fruit}が{count}個あります。"
Console.WriteLine(text)
実行結果は以下のようになります。
りんごが5個あります。
この「$」を忘れると、変数の名前がそのまま文字として表示されてしまうので注意してくださいね。最新のシステム開発現場では、この書き方が主流になっています。
4. 数値の桁数を整えて表示する
フォーマット機能が本当に本領を発揮するのは、数字の見た目を整える時です。例えば、金額を表示する際に「1234567」を「1,234,567」のようにカンマを入れたり、小数の桁数を揃えたりする場合です。これを書式指定と言います。
変数の後ろに「:(コロン)」を付けて、専用の記号を書くだけで、パソコンが自動的に計算して綺麗に表示してくれます。自分でカンマを打つ必要がないので、計算ミスが起きる心配もありません。
Dim price As Integer = 19800
Dim tax As Double = 1.1
' :N0 は桁区切り、:C は通貨形式を意味します
Dim result As String = $"価格は{price:N0}円(税込 {price * tax:C})です。"
Console.WriteLine(result)
実行結果は以下のようになります。
価格は19,800円(税込 ¥21,780)です。
プログラムの中で計算した結果を、そのまま美しい形式で表示できるのは、VB.NETの非常に優れた点です。これを使えば、誰が見ても分かりやすい画面や帳票を作ることができます。
5. 日付を好きな形式に変換する
数字だけでなく、日付の表示も自由自在です。パソコン内部では日付は特殊なデータとして扱われていますが、表示する時は「2026年2月6日」や「2026/02/06」など、好みの形に変えたいですよね。これも文字列補間を使えば一瞬です。
年は「y」、月は「M」、日は「d」という記号を使います。これらを組み合わせることで、世界中のどんな日付形式にも対応できるようになります。
Dim now As DateTime = DateTime.Now
' yyyyは年4桁、MMは月2桁、ddは日2桁、ddddは曜日を表示します
Dim todayText As String = $"本日は {now:yyyy年MM月dd日 (dddd)} です。"
Console.WriteLine(todayText)
実行結果は以下のようになります。
本日は 2026年02月06日 (金曜日) です。
曜日まで自動で出してくれるのは驚きですよね。これもすべてVB.NETのフォーマット機能のおかげです。事務作業の自動化など、日付を扱うプログラムでは欠かせない知識です。
6. 文字の幅を揃えて表のように見せる
最後に、文字の幅(余白)を揃える方法を紹介します。画面にリストを表示するとき、文字の長さがバラバラだとガタガタして見にくいですよね。フォーマット機能を使うと、「必ず10文字分の幅を使って表示する」といった指定が可能です。
カンマの後に数字を入れることで、その幅の中に文字を配置してくれます。プラスの数字なら右寄せ、マイナスの数字なら左寄せになります。これで、まるでエクセルの表のように整列させることができます。
Dim item1 As String = "商品A"
Dim item2 As String = "特選和牛セット"
Dim p1 As Integer = 500
Dim p2 As Integer = 12000
' ,-10 は10文字幅で左寄せ、,8 は8文字幅で右寄せを意味します
Console.WriteLine($"{item1,-10}:{p1,8}円")
Console.WriteLine($"{item2,-10}:{p2,8}円")
実行結果は以下のようになります。
商品A : 500円
特選和牛セット : 12000円
文字数が違っても、金額の桁が綺麗に揃っているのが分かりますね。プログラミングにおいて「見やすさ」は、使う人への優しさでもあります。こうした細かいテクニックを積み重ねることで、初心者から脱却して、実用的なアプリが作れるようになっていきます。
7. フォーマットを使い分けるコツ
今回学んだ「String.Format」と「文字列補間($)」は、どちらが正しいというわけではありません。基本的には最新の「文字列補間」を使えば間違いありませんが、文章のテンプレートを外部のファイルに保存しておいて後から読み込むような特殊な場合には、String.Formatの方が便利なこともあります。
まずは、一番簡単な「$」を使った書き方を完璧にマスターしましょう。変数を中に入れるときは {変数名}、見た目を整えるときは {変数名:書式}。このルールさえ覚えておけば、VB.NETの文字列操作はもう怖くありません。実際に自分の手でコードを打ってみて、数字や日付が魔法のように変わる楽しさを体験してみてください。