HIT해

[Swift] String 본문

Swift/Swift 알고리즘

[Swift] String

힛해 2024. 11. 2. 05:27
728x90

1. 기본 변환

Character 배열 ↔ String

// Character 배열을 String으로 변환
var charArray: [Character] = ["H", "e", "l", "l", "o"]
let string = String(charArray)  // "Hello"

// String을 Character 배열로 변환
let str = "Hello"
let charArray2 = Array(str)  // ["H", "e", "l", "l", "o"]

 

String 배열 조작

// String 배열을 하나의 문자열로 결합
var strArray: [String] = ["Hello", "World"]
let joined = strArray.joined()  // "HelloWorld"
let joinedWithSpace = strArray.joined(separator: " ")  // "Hello World"

// 문자열 분리
let str = "Hello,World,Swift"
let components = str.components(separatedBy: ",")  // ["Hello", "World", "Swift"]
let chars = str.split(separator: ",")  // ["Hello", "World", "Swift"] (Substring 배열)

 

2. 문자 변환

Character ↔ 숫자 변환

// Character를 Int로 변환
let char: Character = "5"
if let number = char.wholeNumberValue {
    print(number)  // 5
}

// ASCII 값 활용
let letterA: Character = "A"
if let ascii = letterA.asciiValue {
    print(ascii)  // 65
    
    // ASCII 값으로 알파벳 위치 계산 (A=1, B=2, ...)
    let alphabetPosition = Int(ascii) - Int(Character("A").asciiValue!) + 1
    print(alphabetPosition)  // 1
}

 

3. 대소문자 처리

let text = "Swift Programming"

// 대문자 변환
let uppercase = text.uppercased()  // "SWIFT PROGRAMMING"

// 소문자 변환
let lowercase = text.lowercased()  // "swift programming"

// 첫 글자만 대문자
let capitalized = text.capitalized  // "Swift Programming"

// 대소문자 판별
let upperChar: Character = "A"
let lowerChar: Character = "a"

// Character 대소문자 판별
upperChar.isUppercase  // true
lowerChar.isUppercase  // false
upperChar.isLowercase  // false
lowerChar.isLowercase  // true

// String에서 대소문자 판별
let str = "Hello"
let firstChar = str.first!
firstChar.isUppercase  // true

// 전체 문자열이 대문자/소문자인지 확인
let allUpperCase = "HELLO"
let allLowerCase = "hello"
let isAllUpper = allUpperCase.allSatisfy { $0.isUppercase }  // true
let isAllLower = allLowerCase.allSatisfy { $0.isLowercase }  // true

// 특정 인덱스의 문자 대소문자 확인
if let index = str.firstIndex(of: "H") {
    let char = str[index]
    print(char.isUppercase)  // true
}

 

4. 공백 처리

// 공백 확인
let char: Character = " "
let isSpace = char.isWhitespace  // true

// 앞뒤 공백 제거
let textWithSpaces = "  Swift  "
let trimmed = textWithSpaces.trimmingCharacters(in: .whitespaces)  // "Swift"

// 모든 공백 제거
let textWithMultipleSpaces = "Swift  Programming  Language"
let noSpaces = textWithMultipleSpaces.replacingOccurrences(of: " ", with: "")  // "SwiftProgrammingLanguage"

 

 

5. 알고리즘 풀이에 유용한 추가 함수들

문자열 검색 및 대체

let text = "Swift Programming"

// 접두어/접미어 확인
let hasPrefix = text.hasPrefix("Swift")  // true
let hasSuffix = text.hasSuffix("ing")    // true

// 부분 문자열 검색
let contains = text.contains("gram")      // true

// 문자열 대체
let replaced = text.replacingOccurrences(of: "Swift", with: "iOS")  // "iOS Programming"

 

문자열 인덱싱

let str = "Hello"

// 특정 인덱스의 문자 접근
let index = str.index(str.startIndex, offsetBy: 1)
let secondChar = str[index]  // "e"

// 부분 문자열 추출
let start = str.index(str.startIndex, offsetBy: 1)
let end = str.index(str.startIndex, offsetBy: 4)
let substring = str[start...end]  // "ello"

 

문자열 조작

var text = "Swift"

// 문자열 삽입
text.insert("!", at: text.endIndex)  // "Swift!"

// 문자열 제거
if let index = text.firstIndex(of: "!") {
    text.remove(at: index)  // "Swift"
}

// 문자열 역순
let reversed = String(text.reversed())  // "tfiwS"

 

유용한 확인 함수들

// 문자 타입 확인
let char: Character = "A"
char.isLetter     // true
char.isNumber     // false
char.isUppercase  // true
char.isPunctuation // false

// 문자열이 비어있는지 확인
let emptyString = ""
emptyString.isEmpty  // true

// 문자열 길이
let length = text.count  // 5

 

6. 자주 사용되는 패턴

숫자 문자열 처리

// 문자열이 숫자로만 구성되어 있는지 확인
let number = "12345"
let isNumeric = number.allSatisfy { $0.isNumber }  // true

// 문자열을 숫자로 변환
if let intValue = Int(number) {
    print(intValue + 1)  // 12346
}

 

문자열 포맷팅

// 숫자 포맷팅
let value = 12345
let formatted = String(format: "%05d", value)  // "12345"

// 소수점 포맷팅
let float = 3.14159
let roundedString = String(format: "%.2f", float)  // "3.14"