[Swift][String] 문자열에서 특정 문자열만 제거하기

Uno·2021년 4월 27일
0

Tip-Swift

목록 보기
3/26
post-custom-banner

빠르게 코드만 보고 싶은 분들을 위해 코드 먼저 올릴께요!

CODE

import UIKit

/* 특정 문자열을 제거하는 방법 */

// Test Case

// 1: 하나도 없는 순수 텍스트만 있는 경우
let subtitle01 = "Controller에 객체를 추가해주세요."

// 2: # 하나 있는 경우
let subtitle02 = "빠르게 완성본을 만들고 싶다면, <font color=\"#ff8000\">#SwiftUI</font>를 공부해야하죠."

// 3: 글자색 변경만 있는 경우
let subtitle03 = "Swift를 공부하기 전에 <font color=\"#ffff00\">영어</font>를 잘해야하요."

// 4: #가 하나 있고, 글자색 변경 하나 있는 경우
var subtitle04 = "이제 <font color=\"#ffff00\">우리가</font> <font color=\"#ff8000\">#스위프트U</font><font color=\"#ffff00\">를 배우는 최종적인 목적이 어떤 </font><font color=\"#ff8000\">#앱</font><font color=\"#ffff00\">구현하는 것을 배울 예정인데</font>"

// 5: #만 2 개 있는 경우
var subtitle05 = "<font color=\"#ff8000\">#문법</font>을 생각하시는 거죠. 물론 <font color=\"#ff8000\">#문법</font>을 잘하면"

// 6: #가 4 개 있는 경우
var subtitle06 = "코딩하는 것들 이 많이 쉬워집니다.<font color=\"#ff8000\"> #구현</font>, <font color=\"#ff8000\">#리펙토링</font>, <font color=\"#ff8000\">#검증</font>, <font color=\"#ff8000\">#검증결과</font>를 좀 더 능숙하게 구할 수 있겠죠."

// 1차 필터링: <font color=\"#ffff00\">
let splitResult01 = subtitle06.replacingOccurrences(of: "<font color=\"#ffff00\">", with: "")
print(splitResult01)

// 2차 필터링: </font>
let splitResult02 = splitResult01.replacingOccurrences(of: "</font>", with: "")
print(splitResult02)

// 3차 필터링: </font>
let splitResult03 = splitResult02.replacingOccurrences(of: "<font color=\"#ff8000\">", with: "")
print(splitResult03)

라는 태그가 함께 넘어오는 자막을 필터링해야하는 상황이엿습니다. font의 글자도 2 종류입니다.

  1. <font color="#ff8000">
  2. <font color="#ffff00">

그래서 그 2 값을 제거하고 태그 종료 인 도 제거했습니다.

테스트 케이스를 통해서 그 당시 발생할 수 있는 경우의 수를 고려했습니다.

이 코드를 사용하시게 된다면, 테스트 케이스에 원하는 케이스를 넣고 테스트 해보신 후에, 본 프로젝트에 적용하는 것을 추천합니다. (제가 테스트를 몇 가지 빼먹었다가 애먹었던 적이 있어서요.TT)

개념


replacingOccurrences(of:with:)

of 내부에 있는 String을 제거한 String을 반환합니다. 제거할 때, with에 있는 String으로 변환합니다.

func replacingOccurrences(of target: String, 
                     with replacement: String) -> String
  • target

    삭제하고 싶은 스트링입니다.

  • replacement

    삭제한 후, 대체할 스트링입니다.

replacingOccurrences(of:with:options:range:) 이 메소드에서 options와 range를 삭제한 메소드입니다.

profile
iOS & Flutter
post-custom-banner

0개의 댓글