文字数の取得方法
Lengthプロパティを使用します。Lengthプロパティは全角文字(2Byte文字・多バイト文字)の場合も1文字としてカウントします。int 文字数 = 対象の文字列.Length
次のコードは「全角かな・半角カナ・半角数字」の混在した文字列の文字数を表示します。Lengthプロパティは全角半角を区別しないため、 15文字を返します。
// 全角かな・半角カナ・半角数字の混在した文字列
string stringValue = "あいうえおカキクケコ12345";
// 文字数を取得
int numberOfCharacters = stringValue.Length;
// 結果 = 文字数 :15
System.Console.WriteLine($"文字数 : {numberOfCharacters}");
バイト数の取得方法
バイト数を取得するには Encodingクラス を使用します。Encoding.GetEncoding()メソッドの引数に コードページ名 を渡して Encodingクラスのインスタンスを生成し、GetByteCount()メソッド に文字列を渡すとバイト数を返します。.NETCore系で Shift-JIS を使用するには Encoding.RegisterProvider()でコードページ エンコーディング プロバイダーの登録が必要です。詳細は次の記事を参照してください。
次のコードは shift-jis でのバイト数の取得方法です。using System.Text;
// コードページ エンコーディング プロバイダーを登録
// (.NET X or NETCore X の場合に必要。.NET Framework X では不要。)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
// Shift-JISでのバイト数を取得する
Encoding shiftJisEncoding = Encoding.GetEncoding("shift_jis");
int バイト数 = shiftJisEncoding.GetByteCount(対象の文字列);
次のコードは UTF-8 でのバイト数の取得方法です。
using System.Text;
// コードページ エンコーディング プロバイダーを登録
// (.NET X or NETCore X の場合に必要。.NET Framework X では不要。)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
// UTF-8でのバイト数を取得する
Encoding utf8Encoding = Encoding.UTF8;
int バイト数 = utf8Encoding.GetByteCount(対象の文字列);
サンプルコード
全角かな・半角カナ・半角数字の混在した文字列の文字数、Shift-JISでのバイト数、UTF-8でのバイト数を取得し、表示します。using System.Text;
// 全角かな・半角カナ・半角数字の混在した文字列
string stringValue = "あいうえおカキクケコ12345";
// 文字数を取得
int numberOfCharacters = stringValue.Length;
// 結果 = 文字数: 15
System.Console.WriteLine($"文字数 : {numberOfCharacters}");
// コードページ エンコーディング プロバイダーを登録
// (.NET X or NETCore X の場合に必要。.NET Framework X では不要)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
// Shift-JISでのバイト数を取得する
Encoding shiftJisEncoding = Encoding.GetEncoding("shift_jis");
int numberOfBytesShiftJis = shiftJisEncoding.GetByteCount(stringValue);
// 結果 = Shift-JISのバイト数: 20
System.Console.WriteLine($"Shift-JISのバイト数: {numberOfBytesShiftJis}");
// UTF-8でのバイト数を取得する
Encoding utf8Encoding = Encoding.UTF8;
int numberOfBytesUtf8 = utf8Encoding.GetByteCount(stringValue);
// 結果 = UTF-8のバイト数: 35
System.Console.WriteLine($"UTF-8のバイト数: {numberOfBytesUtf8}");

参考資料
- Microsoft 公式ドキュメント - String.Length プロパティ
- Microsoft 公式ドキュメント - Encoding.GetEncoding メソッド
- Microsoft 公式ドキュメント - Encoding.GetByteCount メソッド
検証環境
- .NET 5.0
- Microsoft Visual Studio Professional 2019 Version 16.11.16
- Microsoft Windows 10 Enterprise Version 21H2 OS Build 19044.2130 Experience: Windows Feature Experience Pack 120.2212.4180.0