AnsiPosについて

解決


う〜ん  2010-05-11 05:41:57  No: 38397

次のように、文字列を「〜」の前後で分割しようとしています。
AnsiPosの値がバイト数で返るので、うまくいかず困っています。
文字列textは2バイト文字と1バイト文字が混在しています。

pos_nami := AnsiPos('〜',text);
str_left := Leftstr(text,pos_nami);
何か簡単にうまくいく方法はないでしょうか?


ささ  2010-05-11 06:18:08  No: 38398

ByteTypeとか
http://www.wwlnk.com/boheme/delphi/tips/tec0710.htm


けど  2010-05-11 06:55:50  No: 38399

StringReplaceで事前に2バイト文字を置換して1バイト文字に統一してから…
私の脊髄反射的処理です


tor  2010-05-11 07:00:14  No: 38400

> AnsiPosの値がバイト数で返るので
ということなら、文字数ではなくバイト数を指定して取り出せればいいんですよね。
LeftStrのヘルプを見ると、そういう場合はLeftBStrを使ってくださいとありますが、試してみました?


KHE00221  2010-05-11 10:41:52  No: 38401

普通に COPY でいいんじゃないか??

var
    S,Text,Left,Right: String;
    I: Integer;
begin
    Text := '1あいう2345〜67えお890';

    S := '〜';
    I := AnsiPos(S,text);
    Left := Copy(Text,1,I-1);
    Right := Copy(Text,I+Length(S),Length(Text)-I-Length(S)+1);
end;


うーん  2010-05-12 05:12:47  No: 38402

皆さん、ありがとうございます。
KHE00221さんの
>普通に COPY 
でうまくいきました。
本当にありがとうございます。


けど  2010-05-12 05:45:00  No: 38403

〜が~と混在してると脊髄反射的に読んでました
恥ずかしい


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加