VB.NETで文字列の長さを取得!Lengthプロパティの使い方を徹底解説
生徒
「VB.NETで、入力された文字が全部で何文字あるか数える方法はありますか?」
先生
「VB.NETでは、Lengthプロパティを使うことで、とても簡単に文字列の長さを取得することができますよ。」
生徒
「プロパティ…?具体的にはどのようにコードを書けばいいんですか?」
先生
「それでは、初心者の方でもすぐに使える基本的な使い方を詳しく見ていきましょう!」
1. 文字列の長さを取得するLengthプロパティとは?
プログラミングの世界では、文字の集まりのことを「文字列(もじれつ)」と呼びます。例えば、「こんにちは」や「Visual Basic」といった言葉がすべて文字列です。そして、この文字列が全部で何文字あるのかを調べることを「長さを取得する」と言います。
VB.NET(ブイビー・ドットネット)というプログラミング言語には、この文字数を数えるための専用の道具として「Length(レングス)プロパティ」が用意されています。
ここで言う「プロパティ」とは、その対象(文字列)が持っている「特徴」や「データ」のことだと考えてください。例えば、リンゴという対象があれば「色」や「重さ」というプロパティがあるように、文字列という対象には「長さ」というプロパティが備わっているのです。
2. Lengthプロパティの基本的な書き方
使い方はとてもシンプルです。文字列が入っている変数の後ろに「.(ドット)」をつけて、その後に「Length」と書くだけで、その文字数が数字として返ってきます。
例えば、名前を登録するシステムを作っていて、名前が何文字以上でなければならない、といったルール(バリデーションといいます)を作る際によく使われます。
Dim message As String = "Hello"
Dim mojiSu As Integer = message.Length
Console.WriteLine(mojiSu) '結果として5が表示されます
5
上記のコードでは、「Hello」という5文字の単語を変数に入れています。その変数に対して.Lengthを実行すると、「5」という数字が導き出されます。
3. 半角文字と全角文字の数え方の違い
パソコン初心者の方が一番気になるのが、「漢字やひらがなはどう数えられるの?」という点ではないでしょうか。昔のプログラムでは、全角文字を2文字分として数えることがありましたが、VB.NETのLengthプロパティは非常に親切です。
半角のアルファベットも、全角の漢字やひらがなも、すべて「1文字」として正しく数えてくれます。これを「文字ベースのカウント」と呼びます。
Dim aisatsu As String = "こんにちは日本"
Console.WriteLine(aisatsu.Length) '結果は7が表示されます
7
「こ・ん・に・ち・は・日・本」の合計7文字がそのままカウントされているのがわかりますね。これなら、文字数をチェックするプログラムも迷わずに作ることができます。
4. 空白やスペースも文字数に含まれる?
プログラミングで注意が必要なのが、「スペース(空白)」の扱いです。私たちの目には何も見えませんが、コンピュータにとってはスペースも立派な「1文字」として認識されます。
例えば、名字と名前の間にスペースを入れた場合、そのスペースもしっかりとカウントされます。
Dim fullName As String = "田中 太郎" '名字と名前の間に半角スペース
Console.WriteLine(fullName.Length) '「田中」「 」「太郎」で5文字になります
5
このように、目に見える文字だけでなく、隙間に入れたスペースも1文字として数えられることを覚えておきましょう。文字数制限があるシステムを作る際は、この点に注意が必要です。
5. 空の文字列や何もない場合のカウント
もし、変数の中に何も文字が入っていない場合はどうなるでしょうか?プログラムでは、ダブルクォーテーションを2つ並べた""を「空文字(からもじ)」と呼びます。
空文字の長さを測ると、もちろん結果は「0」になります。
Dim emptyText As String = ""
Console.WriteLine(emptyText.Length) '結果は0になります
0
ただし、一つだけ怖いエラー(間違い)のパターンがあります。それは、変数そのものが「何もない(Nothing)」状態のときです。これを専門用語で「Null(ヌル)」や「Nothing(ナッシング)」と言います。
箱(変数)そのものが用意されていない状態で「中身の文字数を教えて!」と命令すると、コンピュータが困ってしまい、「NullReferenceException(ヌル・リファレンス・エクセプション)」というエラーで止まってしまいます。これを防ぐために、文字数を数える前には文字がちゃんと存在するかを確認することが大切です。
6. if文と組み合わせて文字数チェックを作ってみよう
それでは、学んだ知識を組み合わせて実用的なプログラムをイメージしてみましょう。パスワードの設定画面などで、「8文字以上入力してください」という警告を出すような仕組みです。
Dim password As String = "abc12"
If password.Length < 8 Then
Console.WriteLine("エラー:パスワードは8文字以上で入力してください。")
Else
Console.WriteLine("パスワードの長さは問題ありません。")
End If
エラー:パスワードは8文字以上で入力してください。
この例では、password.Lengthが「5」だったので、8より小さいという条件に当てはまり、エラーメッセージが表示されました。このように、LengthはIf文とセットで使われることが非常に多いです。
7. 文字列が長い場合の注意点と改行コード
長い文章(長文)を扱うとき、もう一つ知っておくべきことがあります。それは「改行(かいぎょう)」です。文章の途中でエンターキーを押して行を変えた場合、そこには「改行コード」という特殊な文字が隠れています。
VB.NETのLengthプロパティは、この改行コードも文字としてカウントします。Windowsの標準的な改行(vbCrLfといいます)は、実は「2文字分」として数えられることが多いです。
メモ帳などで文字数を数えるときと、プログラムで数えるときで結果が1~2文字ズレることがあるのは、この目に見えない「改行文字」や「特殊な制御文字」が原因であることが多いのです。
8. Lengthプロパティのまとめと活用のコツ
文字列の長さを知ることは、あらゆるプログラムの基本となります。データの入力を受け付けるとき、画面に文字を表示するとき、あるいは文字を切り取ったり加工したりするときも、まずは「今、何文字あるのか」を把握することから始まります。
最後に重要なポイントを整理しておきましょう。
- 書き方は「文字列変数.Length」とするだけ。
- 漢字、ひらがな、アルファベットすべて1文字で数える。
- スペース(空白)も1文字としてカウントされる。
- 変数がNothing(空っぽ)だとエラーになるので注意。
まずは自分で色々な言葉を変数に入れて、文字数がどう変化するか試してみてくださいね。プログラムが正しく文字を数えてくれる感覚を掴むことが、上達への近道です。