Taehyeon-Kim/SwiftAlgorithm

String을 어떻게 쓰면 잘 썼다고 소문이 날까?

Closed this issue · 3 comments

String split

문자열 쪼개는 건 정말 많이 나오고 중요하다.

  • split, components(separatedBy:)

String to array

let string = "abcdefg"

// 1.
// 나는 다음과 같은 꼴을 정말 많이 사용한다.
string.map { String($0) }

// 2.
string.map { $0 }

// 3.
Array(string)

SubString, SubSequence

String.Index

// String.Index
let text = "abcdefgh"
let start = String.Index(utf16Offset: (text.count-1) / 2, in: text)
let end = String.Index(utf16Offset: text.count / 2, in: text)

print(start)                // Index(_rawBits: 262157) : Index 타입
print(text[start...])       // String에서 슬라이싱을 해주려면 Index 타입의 Range를 사용해야 함
print(text[start...end])
  • String.Index(utf16Offset: _, in: _)
  • Index, SubString, String
  • prefix, suffix

대소문자 관련

  • isUppercase, isLowercase로 대문자, 소문자 판별 가능
  • lowercased(), uppercased()로 대문자, 소문자 변환 가능

아스키 코드

  • 대문자는 65, 소문자는 97부터 시작한다는 것, 그리고 알파벳 개수는 26개라는 것만 기억하자
  • Character 타입에서 사용할 수 있고, Character("a").asciiValue는 UInt? 타입이다.
var letter = "abcde"
let ascii = letter.compactMap { $0.asciiValue }
print(ascii) // [97, 98, 99, 100, 101] -> UInt 타입 배열이 나온다.