반응형
문자열 중 "왼쪽에서" 또는 "오른쪽에서" 부터 "특정 문자" 또는 "문자열" 매칭 비교하여
맞는 경우 삭제. 아닌 경우 문자열 그대로 출력.
기존 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: };
감사합니다.
잘못된 정보나 오타 및 수정사항이 있을 경우 댓글로 달아주시면 감사하겠습니다.
반응형
'GUI > C++ Qt' 카테고리의 다른 글
[C++/QT] QString 문자열 ↔ 자료형 변환 예제모음 (convert data type) (1) | 2023.11.29 |
---|---|
[C++/QT] 무설치 배포 프로그램 만들기(Portable) (8step) (0) | 2022.07.03 |
[C++/QT] QRadioButton 체크 그룹 해제하기 (0) | 2022.07.03 |
[C++/QT] ui 이벤트 처리 함수 (eventFilter) - 기본형 (0) | 2022.06.24 |
[C++/QT] 전체 ui 이벤트 처리 함수 (eventFilter) - 클래스형 (0) | 2022.06.23 |