次のように、文字列を「〜」の前後で分割しようとしています。
AnsiPosの値がバイト数で返るので、うまくいかず困っています。
文字列textは2バイト文字と1バイト文字が混在しています。
pos_nami := AnsiPos('〜',text);
str_left := Leftstr(text,pos_nami);
何か簡単にうまくいく方法はないでしょうか?
ByteTypeとか
http://www.wwlnk.com/boheme/delphi/tips/tec0710.htm
StringReplaceで事前に2バイト文字を置換して1バイト文字に統一してから…
私の脊髄反射的処理です
> AnsiPosの値がバイト数で返るので
ということなら、文字数ではなくバイト数を指定して取り出せればいいんですよね。
LeftStrのヘルプを見ると、そういう場合はLeftBStrを使ってくださいとありますが、試してみました?
普通に 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;
皆さん、ありがとうございます。
KHE00221さんの
>普通に COPY
でうまくいきました。
本当にありがとうございます。
〜が~と混在してると脊髄反射的に読んでました
恥ずかしい
ツイート | ![]() |