カンパ〜イ!←最初の1杯目、なに頼む?

S :=TStringList.Create;
で読みこんだテキスト S.Textの文字列の末尾に一個もしくは複数個の改行#13#10があった場合に取り除きたいのですが、
その方法がいまいちよくわかりません。

ずばり方法、アドバイス、tipsのサイトなど、
教えていただけないでしょうか?

A 回答 (3件)

こんにちは、honiyonです。



 すいません、質問を見落としていました。
 そうしますと、以下のような処理になるでしょうか。

function HOGE(S:string):string;
var
i : integer;
begin
for i:=length(S) downto 1 do begin
if not (S[i] in [#13,#10]) then break;
end;
Result := LeftStr(S, i);
end;

テストしていないので不具合あるかも知れませんが、だいたいこんな感じだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
これでうまくいくことは確認できました。

お礼日時:2006/05/29 23:57

AnsiString にLastDelimiterメソッドかなにかがあったようにおもいます。


これをつかえば、最終の指定文字の場所が得られるので、あとはSubStringでもつかえばできそうですね。
    • good
    • 1
この回答へのお礼

LastDelimiterもありましたね。
実はしばらくdelphiから離れていて、思い出すのに一苦労なのです。
ありがとうございました。

お礼日時:2006/05/29 23:58

こんにちは、honiyonです。



 Delphiのfunctionか、WinAPIに制御文字を取り除く関数があった気がしないでもないのですが、忘れてしまったので別の方法をご説明します。

 Delphiのバージョンが古いと無いかも知れませんが、Delphi7には、StringReplaceというものがあります

 これを使って、

  StringReplace(S.Text, #13#10, '', rfReplaceAll)

 とすると、返り値が#13#10のない文字列になります。

 多分(^^;

 参考になれば幸いです(..

この回答への補足

delphiのverは7です。
StringReplaceでは、すべて、か、最初の文字か、が置き換えられてしまいますよね?
複数行にわたってある文字列の、文章のホントの最後の改行のみを取り除きたいので、スマートな方法がないかと思案しているところです。

補足日時:2006/05/26 20:35
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2006/05/26 20:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報