記事一覧

ランキング登録しています
ご迷惑じゃなければボタンを押してくださいm(_ _)m
にほんブログ村 アウトドアブログ 登山へ
にほんブログ村 人気ブログランキングへ

メモ帳 Delphi7  文字列から指定バイト数切りぬく方法(マルチバイト対応)

バイト数確認方法はこちら


続いては対象文字列から指定したバイト数切りぬく方法。
これ色々あるんですが、
問題も色々・・・

LeftStrやLeftBStr(両方とも確かDelphi6以降)ありますが、
両方とも複数バイトに対応していません。

うまくいく例
s := 'テスト';
s2 := LeftStr(s,2);

これで「テ」を切り抜けます。
セットする数字はバイト数なので、
今回2バイト文字なので2をセット
4で「テス」が返ってくる。

当たり前の話、3とかセットすると文字化けするので、
1バイトと2バイトが混ざっている複数バイトには対応していない。

その為、自分で処理作るしかない・・・

こんな感じで多分行けます。

サンプル
//指定したバイト数に文字列を加工して返す処理
function test(s:String; byte : Integer):String;
var
 S2 : String;
begin
 result := S;
 S2 := '';
 //もし指定バイト数より少ない場合は処理行う必要ないので、
 //そのまま返す
 if Length(S) >= byte then begin

{
  例:100byte指定された場合
  100byte目が2バイトの文字の場合は101byte必要な為、
  99byteにて返す
  1byteの場合は問題ない為、100byteにbyte数減らした後返す。
}
  case ByteType(S,byte) of
   mbSingleByte,mbTrailByte: S2 := Copy(S,1,byte);
   mbLeadByte : S2 := Copy(S,1,(byte-1));
  end;
  //指定バイト以下にした文字列を返す
  result := S2;
 end;
end;

これで自分の好きなバイト数に加工し利用する事が可能

スポンサーサイト

コメント

コメントの投稿

非公開コメント

プロフィール

のん

Author:のん
嫁と結婚して4年半・・・
女?? 嫁以外興味なし♪
嫁大好きっす!!!!!!!

その他登山も開始。
登山初めて約2年。
まだまだ初心者ではありますが、
宜しくお願いします♪

リンク、ブロとも大募集です。
こちらも揃って宜しくお願いします★

マイプロテインの紹介コードになります。
VKLZ-R1
これを使えば購入時に割引が利きますので
もし良ければ使って下さい^^

最新トラックバック

カテゴリ

C# (5)

訪問者数