투케이2K

17. (swift/xcode) equals , contains , split , trim , replaceAll , charAt 메소드 구현 실시 - Extension 추가 본문

Swift

17. (swift/xcode) equals , contains , split , trim , replaceAll , charAt 메소드 구현 실시 - Extension 추가

투케이2K 2021. 10. 13. 08:17
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT


[소스 코드]

import Foundation
/*
 [ExtensionUtil 파일]
 1. 생성 방법 : New File >> Swift File
 2. 호출 방법 : 각 데이터 타입에 맞게 즉시 호출 (ex - str.euals(_string : data))
 */


// [extension 정의 실시 : Int]
extension Int {
    var isEven : Bool { // 짝수 여부 확인
        return self % 2 == 0
    }
    var isOdd : Bool { // 홀수 여부 확인
        return self % 2 == 1
    }
}





// [extension 정의 실시 : String]
extension String {
    func equals (_string : String) -> Bool { // 두개 문자열이 같은지 확인
        // 인풋으로 들어온 파라미터 데이터와 타입이 일치하는 경우
        if(self == _string){
            return true
        }
        else {
            return false
        }
    }
    
    
    func charAt (_index : Int) -> Character { // 특정 번지 문자만 출력 실시
        let charIndex = self.index(self.startIndex, offsetBy: _index)
        return self[charIndex]
    }
    
    
    func subString (_start : Int, _end : Int) -> String { // 부분 문자열 출력 실시
        let startIndex = self.index(self.startIndex, offsetBy: _start)
        let endIndex = self.index(self.startIndex, offsetBy: _end)
        // 시작 ~ 종료까지 부분 문자열 출력
        return String(self[startIndex...endIndex])
    }
    
    
    func trim () -> String { // 문자열 공백 제거 실시
        // 시작, 끝 양쪽 공백 제거 실시
        return self.trimmingCharacters(in: .whitespacesAndNewlines)
    }
    
    
    func replaceAll (_string : String, _replace : String) -> String { // 문자열 변경 실시
        return self.replacingOccurrences(of: _string, with: _replace)
    }
}

 

 

 

     /*
     [요약 설명]
     1. 익스텐션(Extension)은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능입니다
     2. 익스텐션은 타입에 새로운기능을 추가할 수 있지만,기존에 존재하는 기능을 재정의할 수는 없습니다(원본 수정 불가)
     3. [extension 메소드 설명] :
        - equals = String 데이터가 같은지 확인합니다
        - trim = 양쪽 끝 공백을 제거합니다
        - replaceAll = 특정 문자열 변경을 실시합니다
        - charAt = 특정 문자 인덱스 위치 값을 반환합니다
     */
    
    
    
    // [테스트 메인 함수 정의 실시]
    func testMain() {
        print("[Program Start]")
        print("")
        
        // [초기 String 변수 정의 실시]
        let str_one : String = " abcaBC 안녕 "
        let str_two : String = " bcd,bCD,헬로 "
        let str_three : String = " abcaBC 안녕 "
        
        
        // [문자열 길이 확인 및 개별 문자 출력 실시]
        print("str_one [len] : ", str_one.count)
        print("")
        for i in stride(from: 0, through: str_one.count-1, by: 1){
            // trom : 시작 / through : 종료 / by : 증감
            print("str_one [index] : ", str_one.charAt(_index: i))
        }
        print("")
        
        
        // [문자열이 같은 지 확인 및 특정 문자열 포함 확인]
        print("str_one [equals] str_two : ", str_one.equals(_string: str_two))
        print("str_one [equals] str_three : ", str_one.equals(_string: str_three))
        print("str_one [contains] 안녕 : ", str_one.contains("안녕"))
        print("str_one [contains] 헬로 : ", str_one.contains("헬로"))
        print("")
        
        
        // [trim 사용해 시작, 끝 공백 제거]
        print("str_one [len] : ", str_one.count)
        print("str_one [trim] [len] : ", str_one.trim().count)
        print("str_one [trim] [data] : ", str_one.trim())
        print("")
        
        
        // [replaceAll 사용해 문자열 치환 실시]
        print("str_one [replaceAll] : ", str_one.replaceAll(_string: "a", _replace: "A"))
        print("str_one [replaceAll] : ", str_one.replaceAll(_string: " ", _replace: ""))
        print("")
        
        
        // [split 사용해 특정 문자열 기준 분리 실시]
        print("str_two [split] [원본] : ", str_two)
        print("str_two [split] [0] : ", str_two.split(separator: ",")[0])
        print("str_two [split] [1] : ", str_two.split(separator: ",")[1])
        print("str_two [split] [2] : ", str_two.split(separator: ",")[2])
        print("")
    }

[결과 출력]


[요약 설명]

/*

[요약 설명]

1. 익스텐션(Extension)은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능입니다

2. 익스텐션은 타입에 새로운기능을 추가할 수 있지만,기존에 존재하는 기능을 재정의할 수는 없습니다(원본 수정 불가)

3. [extension 메소드 설명] :

- equals = String 데이터가 같은지 확인합니다

- trim = 양쪽 끝 공백을 제거합니다

- replaceAll = 특정 문자열 변경을 실시합니다

- charAt = 특정 문자 인덱스 위치 값을 반환합니다

*/


 

반응형
Comments