나의 발자취
Swift Notes for Professionals PDF (1) 문자열 본문
Reversing Strings
문자열 거꾸로 하는 방법: .characters.reversed() 를 쓴다.
let aString = "This is a test string."
let reversedCharacters = aString.characters.reversed()
String contains Characters from a Defined Set
특정 문자열 안에서 캐릭터 찾기
let letters = CharacterSet.letters
let phrase = "Test case"
let range = phrase.rangeOfCharacter(from: letters)
// range will be nil if no letters is found
if let test = range {
print("letters found")
}
else {
print("letters not found")
}
let phrase = "Test case"
let charset = CharacterSet(charactersIn: "t")
if let _ = phrase.rangeOfCharacter(from: charset, options: .caseInsensitive) {
print("yes")
}
else {
print("no")
}
String Iteration
문자열 순회: Swift 3 부터는 .index(after: ), .index(before: ), .index(_:, offsetBy:) 메서드들이 있다. 그리고 Index와의 혼동을 방지하기 위해서 currentIndex를 인덱스로 사용한다.
let string = "My fantastic string"
var currentIndex = string.startIndex
while currentIndex != string.endIndex {
print(string[currentIndex])
currentIndex = string.index(after: currentIndex)
}
또는 for 문을 써서 순회할 수 있지만 이것은 문맥에 맞게 사용해야 한다.
for c in string.characters {
print(c)
}
offsetBy: 인자를 음수로 두게 되면 거꾸로 순회할 수 있다.
currentIndex = string.index(string.startIndex, offsetBy: 2)
그리고 만약 string의 bound를 초과할 것 같으면, 한도를 설정할 수 있다.
currentIndex = string.index(string.startIndex, offsetBy: 20, limitedBy: string.endIndex)
Split a String into an Array
let startDate = "23:51"
let startDateAsArray = startDate.components(separatedBy: ":") // ["23", "51"]
16진법 수 사용하는 법
Swift에서 Character 타입은 여러 유니코드로 조합되어 하나의 문자로 나타날 수 있다. 이것을 Extended Grapheme Cluster 라고 부른다.
var str: String = "\\u{61}\\u{5927}\\u{1F34E}\\u{3C0}" // a大π
var character: Character = "\\u{65}\\u{301}" // é = "e" + accent mark
String을 Data/NS Data 형식으로 변환하는 법
String -> Data/NS Data
let data = string.data(using: .utf8)
Data/NS Data -> String
let string = String(data: data, encoding: .utf8)
Formatting Strings
Leading Zeros - 0를 여백으로 채워넣기
let number: Int = 7
let str1 = String(format: "%03d", number) // 007
let str2 = String(format: "%05d", number) // 00007
Numbers after Decimal
import Foundation
let number: Float = 3.14159
let str1 = String(format: "%.2f", number) // 3.14
let str2 = String(format: "%.4f", number) // 3.1416 (rounded)
대소문자 변환
let text = "AaBbCc"
let uppercase = text.uppercased() // "AABBCC"
let lowercase = text.lowercased() // "aabbcc"
Decimal. Format Style
import Foundation
let number: Decimal = 3.14159
let formattedNumber = number.formatted(.number) // "0.1"
let formattedPercent = number.formatted(.percent) // "10%"
let formattedCurrency = number.formatted(.currency(code: "USD")) // "$0.10"
let number2: Float = 3.14159
let str1 = String(format: "%.2f", number2) // 3.14
let str2 = String(format: "%.4f", number2) // 3.1416 (rounded)
https://developer.apple.com/documentation/foundation/decimal/formatstyle
통화단위 (Foundation)
https://developer.apple.com/documentation/regexbuilder
import Foundation
let number: Decimal = 3.14159
let formattedNumber = number.formatted(.number)
// formattedNumber is "0.1"
let formattedPercent = number.formatted(.percent)
// formattedPercent is "10%"
let formattedCurrency = number.formatted(.currency(code: "USD"))
// formattedCurrency is "$0.10"
통화단위 Regex (RegexBuilder)
https://developer.apple.com/documentation/regexbuilder
import RegexBuilder
let source = "Payment due: $49,525.99"
let matcher = Regex {
OneOrMore(.any)
": "
Capture {
One(.localizedCurrency(code:Locale.Currency("USD"),
locale:Locale(identifier: "en_US")))
}
}
let match = source.firstMatch(of: matcher)
let localizedDecimal = match?.1 // 49525.99
Removing leading and trailing WhiteSpace and NewLine
import Foundation
let someString = " Swift Language \n"
let trimmedString = someString.trimmingCharacters(in: .whitespacesAndNewlines)
// "Swift Language"
let trimmedWhiteSpace = someString.trimmingCharacters(in: .whitespaces)
// "Swift Language \n"
let trimmedNewLine = someString.trimmingCharacters(in: .newlines)
// " Swift Language "
'앱 개발 > iOS' 카테고리의 다른 글
Swift Notes for Professionals PDF (3) Arrays (1) | 2024.09.19 |
---|---|
Swift Notes for Professionals PDF (2) Booleans 요약 (0) | 2024.09.19 |
iOS 무한 스크롤 구현하는 법: How to implement an Infinite Scrolling List (2) | 2024.09.16 |
XCode에서 마크다운 형식 보는법 - 단축키 한번에 (0) | 2024.09.11 |
API 결과값 안에 tag가 있을 때 - Regex (0) | 2024.09.10 |