HIT해
[Swift] String 본문
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"
'Swift > Swift 알고리즘' 카테고리의 다른 글
[Swift] Swift 수학 연산 및 Reduce (0) | 2024.11.02 |
---|---|
[Swift/백준] 가장 긴 증가하는 부분 수열 ( LIS , DP ) (0) | 2024.11.02 |
[Swift/프로그래머스] 여행경로 ( DFS , 딕셔너리 ) (1) | 2024.11.02 |
[Swift/프로그래머스] 섬 연결하기 ( 그리디, MST ) (0) | 2024.11.02 |
[Swift] 크루스칼 알고리즘 ( MST 최소 신장 트리 ) (0) | 2024.11.02 |