LoginSignup
0
1

More than 5 years have passed since last update.

C++ Builder XE4, 10.2 Tokyo > String > 行末のCRLFを削除する方法 > Trim() or StringReplace()

Last updated at Posted at 2017-09-27
動作環境
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2018/01/05)

実装内容

String withCRLF = L"Hellow World\r\n";

のような文字列からCR,LFを削除したい。

StringReplace()を使う方法を従来使っていたが、Trim()でも可能とのこと。

answered Jun 9 '16 at 10:12
jcfaria

code

Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    String withCRLF = L"Hellow World\r\n";

    // 1.
    Memo1->Lines->Add(L"===with CRLF");
    Memo1->Lines->Add(withCRLF);
    Memo1->Lines->Add(withCRLF);

    // 2.
    Memo1->Lines->Add(L"===without CRLF using Trim()");
    String woCRLF = Trim(withCRLF);
    Memo1->Lines->Add(woCRLF);
    Memo1->Lines->Add(woCRLF);

    // 3.
    Memo1->Lines->Add(L"===without CRLF using StringReplace");
    String wrk = StringReplace(withCRLF, L"\r\n", L"", TReplaceFlags()<<rfReplaceAll);
    Memo1->Lines->Add(wrk);
    Memo1->Lines->Add(wrk);
}
//---------------------------------------------------------------------------

qiita.png

Trim

ビルトインヘルプによると

System.UnicodeString.Trim
...
説明
新しい UnicodeString を、前後のスペースおよび制御文字を除いて返します。

制御文字であるCR, LFを除くことができる。

Trim() or StringReplace()?

  • Trim()
    • 簡潔ではある
    • ソースを読んだ時に「意図」が分かりにくい
      • 前後のスペースを消したいのか
      • CR, LFを消したいのか
  • StringReplace()
    • 簡潔でない
    • ソースを読んだ時に「意図」が分かる
      • CR, LFを消す

Trim()を使う場合は、コメントと合わせて使う方が良いように思う。

String wrk = Trim(srcStr); // 行末の<CR><LF>を削除

コメントなしの場合、意図が分からずに間違った実装に気づかない。

別途、「前後の空白が削除される」ことが意図に反するかどうかも注意点である。

1つの関数で2種類の内容を実行している関数は、意図が分かりにくいために失敗を誘発する。
また、関数のコール文においての可読性が低下する。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1