文字列からバイト数で部分文字列を切り出すサンプルです。
サンプル
例1)Shift-JISの文字列「あいうえお」の5バイト目から4バイト分の文字列を取得する
using System.Text;
//Shift-JISのエンコーディングを取得する
Encoding enc = Encoding.GetEncoding("Shift_JIS");
//文字列「あいうえお」の5バイト目から4バイト分を取得
byte[] b = enc.GetBytes("あいうえお");
string result = enc.GetString(b, 4, 4);
.Coreを使用している場合で例外が発生する場合は以下記事をご覧ください。
→ [C#] .NET CoreでShift-JISを扱う
結果
うえ
UTF-8は1文字を2バイトで表します。
例2)UTF-8の文字列「あいうえお」の7バイト目から6バイト分の文字列を取得する
using System.Text;
//Shift-JISのエンコーディングを取得する
Encoding enc = Encoding.UTF8;
//文字列「あいうえお」の7バイト目から6バイト分を取得
byte[] b = enc.GetBytes("あいうえお");
string result = enc.GetString(b, 6, 6);
結果
うえ
UTF-8は1文字を3バイトで表します。
備考
- 文字の途中となるバイト数を指定した場合は、正しい文字列が取得されません。
そのような場合は、以下記事をご覧ください。
→ [C#] 文字列をバイト数で切り出す(全角文字の途中で切れる場合の対応版)