[C#]文字列の長さをバイト単位で得る
EncodingクラスのGetByteCountクラスを使う。
System.Text.Encoding sjis =
System.Text.Encoding.GetEncoding("shift_jis");
Console.WriteLine("ABC".Length);
Console.WriteLine("あい".Length);
Console.WriteLine("ABあいう".Length);
Console.WriteLine(sjis.GetByteCount("ABC"));
Console.WriteLine(sjis.GetByteCount("あい"));
Console.WriteLine(sjis.GetByteCount("ABあいう"));
出力結果
3
2
5
3
4
8
C#は文字列の文字コードに、すべての文字を2バイトで表現するUnicodeを使っている。一方でMS-DOS時代は、いわゆる半角文字(上記の例では「A」や「B」)は1バイトで、全角文字(上記の例では「あ」や「い」)は2バイトで文字を表現していた。そのため、文字列の文字コードにシフトJIS(shift_jis)を指定して、何バイトか調べれば、文字列の長さをバイト単位で得ることができる。
« [Python]NumPyのndarray型(行列)から任意の列のみ抜き出す | トップページ | [C#]文字列を数値に変換できるか否か確認する »
「C#」カテゴリの記事
- [C#]リストの要素を削除する(2024.05.02)
- [C#]リストに要素を追加する(2024.03.10)
- [C#]リストを作成する(2024.03.09)
- [C#]エラー「CS8370 機能 'target-typed オブジェクトの作成' は C# 7.3 では使用できません。9.0 以上の言語バージョンをお使いください。」(2024.03.08)
- [C#]StreamWriterクラスを使用して文字コードを指定してファイルに書き込む(2024.03.07)
« [Python]NumPyのndarray型(行列)から任意の列のみ抜き出す | トップページ | [C#]文字列を数値に変換できるか否か確認する »

コメント