오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-07 05:42
관리 메뉴

우노

[C++] 특정 문자열 제거 본문

Language/C++

[C++] 특정 문자열 제거

운호(Noah) 2022. 5. 6. 23:23

들어가기 앞서,

  • 문자열 제거는 아래와 같이 다양한 문제들이 존재합니다.
    • 특정 Index 의 문자를 제거
    • 특정 문자를 제거
    • 특정 문자를 제외한 모든 문자를 제거
  • 각 문제에 대한 해결 방법을, 예제 코드를 통해 다뤄보겠습니다.

특정 Index 의 문자를 제거

#include <iostream>
#include <string>

using namespace std;

int main() {

    string str1 = "ABCDE";
    str1.erase(str1.begin());                           // 첫 글자 삭제
    cout << str1 << endl;                               //BCDE

    string str2 = "ABCDE";
    str2.erase(str2.end()-1);                           // 마지막 글자 삭제
    cout << str2 << endl;                               //ABCD

    // 매개변수를 반복자로 선언

    string str3 = "ABCDE";
    str3.erase(str3.begin() + 1);                       // 1번 index 삭제 
    cout << str3 << endl;                               //ACDE

    string str4 = "ABCDE";
    str4.erase(str4.begin() + 1, str4.begin() + 3);     // 1번 index부터 2번 index까지 삭제
    cout << str4 << endl;                               //ADE

    // 매개변수를 숫자로 선언

    string str5 = "ABCDE";
    str5.erase(2,2);                                    // 2번 index부터 2개 삭제
    cout << str5 << endl;                               //ABE

    string str6 = "ABCDE";
    str6.erase(2);                                      // 2번 index부터 마지막 index까지 전부 삭제
    cout << str6 << endl;                               //AB

    return 0;
}

특정 문자를 제거

  • erase 를 사용해 제거하는 방법

    • remove 함수는, 특정 문자가 있는 모든 인덱스를 erase 함수에게 반환하는 역할을 합니다.

      #include <iostream>
      #include <string>
      
      using namespace std;
      
      int main(){
      
        string str1 = "aaa . . . bbb";
      
        // 공백 제거
        str1.erase(remove(str1.begin(), str1.end(), ' '), str1.end());
      
        cout << str1 << endl;     // aaa...bbb
        return 0;
      }
  • regex_replace 를 사용해 제거

    • regex_replace.(대상 문자열, regex(정규표현식), 변경 문자열)

      #include <iostream>
      #include <string>
      #include <regex>
      
      using namespace std;
      
      int main() {
      
        string str1 = "aaa . . . bbb";
      
        // 공백과 마침표를 제거
        str1 = regex_replace( str1 , regex("[ .]+"), "" );
      
        cout << str1 << endl;     // aaabbb
        return 0;
      }

특정 문자를 제외한 모든 문자를 제거

  • regex_replace 를 사용해 제거

    • regex_replace.(대상 문자열, regex(정규표현식), 변경 문자열)

      #include <iostream>
      #include <string>
      #include <regex>
      
      using namespace std;
      
      int main() {
      
        string str1 = "...!@bat#*..y.abcdefghijklm";
      
        // 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자열 제거
        str1 = regex_replace( str1 , regex("[^a-z0-9-_.]+"), "" );
      
        cout << str1 << endl;     // ...bat..y.abcdefghijklm
        return 0;
      }

'Language > C++' 카테고리의 다른 글

[C++] 특정 문자열 변경 및 치환  (0) 2022.05.06
[C++] 문자열 추가 및 삽입  (0) 2022.05.06
[C++] 문자열 대문자 소문자 변환 방법  (0) 2022.05.06
[C++] 범위 기반 for 문  (0) 2022.04.26
[C++] 1차원 Vector 초기화  (0) 2022.04.26
Comments