투케이2K

126. (swift/xcode) Subscript 서브스크립트 사용해 String 문자열 특정 인덱스 및 인덱스 범위 문자열 출력 - charAt , subString 본문

Swift

126. (swift/xcode) Subscript 서브스크립트 사용해 String 문자열 특정 인덱스 및 인덱스 범위 문자열 출력 - charAt , subString

투케이2K 2022. 11. 13. 11:21

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

    // MARK: - [테스트 메인 함수 정의 실시]
    func testMain() {
        print("")
        print("====================================")
        print("[\(self.ACTIVITY_NAME) >> testMain() :: 테스트 함수 시작 실시]")
        print("====================================")
        print("")
        
        
        /*
         // -----------------------------
         [요약 설명]
         // -----------------------------
         1. Subscript 는 읽고, 쓰기 가능 OR 읽기 가능 옵션을 선택할 수 있습니다
         // -----------------------------
         2. Subscript 는 클래스, 구조체, 열거형에서 정의할 수 있습니다
         // -----------------------------
         */
        
        
        // [비동기 처리 수행]
        DispatchQueue.main.async {
            
            // [초기 변수 선언 실시]
            let strData = "TWOK"
            
            
            // [로그 출력 실시]
            print("")
            print("====================================")
            print("[\(self.ACTIVITY_NAME) >> testMain() :: 로그 출력 실시]")
            print("[0 인덱스 문자열 :: \(strData[0])]")
            print("[3 인덱스 문자열 :: \(strData[3])]")
            print("[0 ~ 3 인덱스 문자열 :: \(strData[0..<3])]")
            print("[3 이상 인덱스 문자열 :: \(strData[3...])]")
            print("[6 이상 인덱스 문자열 :: \(strData[6...])]")
            print("====================================")
            print("")
            
        }
    }






// MARK: - [String 확장 정의 실시]
extension String {
    
    //---------------------------
    // [문자열 특정 인덱스 번지 문자 출력 : charIndexn: strData[0]]
    //---------------------------
    subscript(idx: Int) -> String {
        
        if self == nil || idx < 0 || idx >= self.count {
            return ""
        }
        let target = self.index(startIndex, offsetBy: idx)
        
        return String(self[target])
    }
    
    
    //---------------------------
    // [특정 범위 내 문자열 출력 : [start..<end] : strData[0..<3]]
    //---------------------------
    subscript(_ range: CountableRange<Int>) -> String {

        if self == nil || range.startIndex < 0 || range.endIndex > self.count {
            return ""
        }
        
        let start = self.index(startIndex, offsetBy: max(0, range.lowerBound))
        let end = self.index(startIndex, offsetBy: min(self.count, range.upperBound))
        
        return String(self[start..<end])
    }
    
    
    //---------------------------
    // [특정 문자열 인덱스 기준 이후 문자열 출력 : [index...] : strData[3...]]
    //---------------------------
    subscript(_ range: CountablePartialRangeFrom<Int>) -> String {
        
        if self == nil || max(0, range.lowerBound) < 0 || max(0, range.lowerBound) > self.count {
            return ""
        }
        
        let start = self.index(startIndex, offsetBy: max(0, range.lowerBound))
        return String(self[start...])
    }
}
 

[결과 출력]

 

 
반응형
Comments