반응형

 

문자열 중 "왼쪽에서" 또는 "오른쪽에서" 부터 "특정 문자" 또는 "문자열" 매칭 비교하여

맞는 경우 삭제. 아닌 경우 문자열 그대로 출력.

기존 CString에서 제공하는 함수 중 TrimRight, TrimLeft를 QString에서도 사용할 수 있도록 함수 구현함.


 

# 개발환경

  • 개발도구 : Visual Studio Community 2017
  • QT 버전 : 5.12.5

 

# 결과

  • 테스트 문자열 : Jeff's DevSpace, C++, C, Qt(99)
  • Trim Right 문자열 :  9)
  • Trim Left 문자열 :  Jeff's  


# 예제소스

  • .cpp
    #include <iostream>
    #include <qdebug.h>
    #include "vs2017_qt_example.h"
    
    using namespace std;
    
    vs2017_qt_example::vs2017_qt_example(QWidget *parent) : QMainWindow(parent), ui(new Ui::vs2017_qt_exampleClass)
    {
        ui->setupUi(this);
    
        QString qsTest;
        QString result;
    
        qsTest = "Jeff's DevSpace, C++, C, Qt(99)";
        printQstr(qsTest);
    
        result = trimRight(qsTest, "9)");
        printQstr("QString Trim Right ( 9) ) : " + result);
    
        result = trimLeft(qsTest, "Jeff's");
        printQstr("QString Trim Left ( Jeff's ) : " + result);
    
    }
    
    vs2017_qt_example::~vs2017_qt_example() { }
    
    QString vs2017_qt_example::trimRight(QString qsFullStr, QString target)
    {
        // startIdx
        int len = qsFullStr.length();
        int len2 = target.length();
        int startIdx = len-len2;
        if(startIdx < 0) return qsFullStr;
    
        // parse
        QString qsParse = "";
        for(int n=startIdx; n<len; n++){
            qsParse.append(qsFullStr.at(n));
        }
    
        // cmp, split
        QString qstr = "";
        if(qsParse==target) qstr = qsFullStr.chopped(len2);
        else                    qstr = qsFullStr;
    
        return qstr;
    }
    
    
    QString vs2017_qt_example::trimLeft(QString qsFullStr, QString target)
    {
        // len
        int len = target.length();
        if(qsFullStr.length() < len) return qsFullStr;
    
        // parse
        QString qsParse = "";
        for(int n=0; n<len; n++){
            qsParse.append(qsFullStr.at(n));
        }
    
        // cmp, split
        QString qstr = "";
        if(qsParse==target) qstr = qsFullStr.remove(0, len);
        else                qstr = qsFullStr;
    
        return qstr;
    }
    
    
    void vs2017_qt_example::printQstr(QString qstr)
    {
        qDebug() << qstr << endl;
    }​​
  • .h
    #pragma once
    
    #include <QtWidgets/QMainWindow>
    #include "ui_vs2017_qt_example.h"
    
    class vs2017_qt_example : public QMainWindow
    {
        Q_OBJECT
    
    public:
        vs2017_qt_example(QWidget *parent = nullptr);
        ~vs2017_qt_example();
    
        void printQstr(QString qstr);
        QString trimRight(QString qsFullStr, QString target);
        QString trimLeft(QString qsFullStr, QString target);
    
    private:
        Ui::vs2017_qt_exampleClass* ui;
    
    private Q_SLOTS:
    
    };​

감사합니다.

 

잘못된 정보나 오타 및 수정사항이 있을 경우 댓글로 달아주시면 감사하겠습니다. 

 


 

반응형

+ Recent posts