C#/VB.NET 文字列の長さを取得するLength / GetByteCount

文字列の長さを取得する方法としてLengthプロパティとバイト数を取得する方法としてGetByteCountを解説します。

文字列の長さを取得するにはどうしたらいいのかな?

文字数はLengthで取得します。
バイト数を取得するには、EncodingクラスのGetByteCountで取得します。

目次

文字列の文字数の取得

文字列の文字数を取得するには、StringクラスのLengthプロパティを使用します。

文字列.Length

string Moji = "Hello World";
int MojiSu = Moji.Length;
MessageBox.Show(MojiSu.ToString());
		Dim Moji As String = "Hello World"
		Dim MojiSu As Integer = Moji.Length
		MessageBox.Show(MojiSu.ToString())
11

上記の例では、文字列 “Hello World!” の長さを取得し、変数MojiSuに代入しています。

文字列のバイト数の取得

文字列のバイト数を取得するには、EncodingクラスのGetByteCountを使用します。

ASCII、UTF-7、UTF-8、UTF-16、UTF-32意外はEncoding.RegisterProviderを利用してプロバイダーの登録が必要になります。

変数 = Encoding.GetEncoding(コードページ または コードページ名)
変数.GetByteCount(文字列)

//ASCII、UTF-7、UTF-8、UTF-16、UTF-32意外はプロバイダーの登録が必要
//コードページのエンコードプロバイダーへの登録
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

string Moji = "バイト数確認";
//コードページIDの場合
//Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(932)
//コードページ名の場合
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis");

MessageBox.Show(enc.GetByteCount(Moji).ToString());
'ASCII、UTF-7、UTF-8、UTF-16、UTF-32意外はプロバイダーの登録が必要
'コードページのエンコードプロバイダーへの登録
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)

Dim Moji As String = "バイト数確認"
'コードページIDの場合
'Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(932)
'コードページ名の場合
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")

MessageBox.Show(enc.GetByteCount(Moji))
12

上記の例では、shift-jisエンコーディングを使用して文字列 “バイト数確認” をバイト配列に変換する場合のバイト数を取得しています。GetByteCountメソッドは、Encodingクラスの静的メソッドであり、文字列をエンコードするためのエンコーディングを指定する必要があります。

ワンポイント

注意点としては、文字列がマルチバイト文字(日本語や中国語など)を含む場合、GetByteCountメソッドが返すバイト数は、文字列のLengthプロパティが返す文字数と一致しないことがあります。これは、マルチバイト文字が複数のバイトにエンコードされるためです。

リスキリングでキャリアアップしてみませんか?

リスキリング(学び直し)は、経済産業省が推奨しており、

今だけ、最大70%のキャッシュバックを受けることができます。

リスキリング 給付金が出るスクール紹介

最大70%の給付金が出るおすすめのプログラミングスクール!

国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

興味のある方はすぐに確認しましょう。

まとめ

文字列の長さを取得するには、StringクラスのLengthプロパティを使用することができます。また、文字列をバイト配列に変換する際には、StringクラスのGetByteCountメソッドを使用する方法もあります。

正確な文字列の長さを取得するためには、文字列に含まれるマルチバイト文字の扱いに注意する必要があります。また、文字列をエンコードする際のエンコーディングによって、文字列のバイト数が異なることも覚えておくと良いでしょう。

Microsoft Learnの解説

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次