C++ Builder 10.2 Tokyo > CSV 문자열 > (")을 추가하는 함수 | (")를 제거하는 함수
11517 단어 CSVcppBuilderstringOperation
RAD Studio 10.2 Tokyo Update 3
개요
JSON 문자열에 문자열 대체를 시도하면 빠져 버렸다.
"
DelimitedText를 사용할 때 사라지기 때문입니다.그것을 피하기 위해 구현했다.
구현
이번에는 Unit1.cpp에 클래스(CUtilCsv_specialChar)를 추가해 구현했다.
본래는 1 파일에 복수의 클래스를 넣는 것은 하지 않는다.
소스 분리하기 전 단계의 상황.
Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE で管理されるコンポーネント
TMemo *Memo1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // ユーザー宣言
public: // ユーザー宣言
__fastcall TForm1(TComponent* Owner);
};
class CUtilCsv_specialChar
{
public:
static String __fastcall putEachItemBetweenChars(String csvStr, char specialChar);
static String __fastcall removeCharsFromEachItem(String csvStr, char specialChar);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <memory>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Memo1->Lines->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String srcstr = L"\"AAA\",\"BBB\",\"CCC\"";
Memo1->Lines->Add(srcstr);
String wrk = srcstr; // 作業用
wrk = CUtilCsv_specialChar::removeCharsFromEachItem(wrk, '"');
Memo1->Lines->Add(wrk);
wrk = CUtilCsv_specialChar::putEachItemBetweenChars(wrk, '"');
Memo1->Lines->Add(wrk);
}
/*static*/String __fastcall CUtilCsv_specialChar::putEachItemBetweenChars(String csvStr, char specialChar)
{
std::unique_ptr<TStringList> wrkSL(new TStringList);
wrkSL->StrictDelimiter = true;
wrkSL->Delimiter = ',';
wrkSL->DelimitedText = csvStr;
String res = L"";
for(int idx=0; idx < wrkSL->Count; idx++) {
if (res.Length() > 0) {
res += L",";
}
res += String(specialChar) + wrkSL->Strings[idx] + String(specialChar);
}
return res;
}
/*static*/String __fastcall CUtilCsv_specialChar::removeCharsFromEachItem(String csvStr, char specialChar)
{
String res = StringReplace(csvStr, String(specialChar), L"", TReplaceFlags()<<rfReplaceAll);
return res;
}
//---------------------------------------------------------------------------
실행 예
첫 번째 줄: 원래 문자열
두 번째 줄 : double quotation을 제거한 후
세 번째 줄 : double quotation을 넣은 후
Reference
이 문제에 관하여(C++ Builder 10.2 Tokyo > CSV 문자열 > (")을 추가하는 함수 | (")를 제거하는 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/b31bdeaa26e633f0226a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)