Swift

String

728x90

안녕하세요:)

 

오늘은 String(문자열)에 대해서 알아보는 시간을 가지도록 할게요!

 

1. String, Character

  • String은 문자열을 나타내는 자료형입니다.
  • String 타입 데이터의 값을 표현할 때는 큰따옴표(" ")를 사용합니다.
  • 문자열을 변수로 저장하면 언제든지 변경이 가능합니다.
  • 빈 문자를 저장하고 싶다면 큰따옴표 사이에 공백을 추가해야 합니다.
  • 문자로 처리하고 싶다면 타입을 반드시 지정해 줘야 합니다.
let str = "안녕하세요" // Immutable String 바꿀 수 없는 문자열
var str2 = "반가워요" // Mutable String 바꿀 수 있는 문자열
let str3 = "A" // 이건 문자열일까요? 문자일까요? -> 문자열입니다!

let Ch: Character = "A" // 문자로 처리하고 싶을 때는 반드시 타입을 지정해 줘야 합니다!!

let emptyStr = "" // 빈 문자열! 공백을 추가하지 않아야 합니다.
let emptyStr2 = String() // 생성자를 사용한 빈 문자열

let emptyChar: Character = " " // 빈 문자를 저장하고 싶다면 반드시 공백을 추가해 줘야 합니다.

2. single-line , Multiline String Literal

  • Multiline String은 큰따옴표 세 개를 사용합니다.
  • Multiline String은 여는 따옴표와 닫는 따옴표 사이의 모든 줄이 포함됩니다.
"안녕하세요, 반가워요" // single-line

let multiline = """
안녕하세요
반가워요
행복하세요
!!!
"""
  • Multiline String  내부에 줄 바꿈( \ )이 포함되어 있다면 줄 바꿈이 문자열 값에 나타납니다.
let multiline = """
안녕하세요
반가워요\
행복하세요
!!!
"""

3. Raw String

var str = "Hello, Swift"
print(str) // Hello, Swift

str = "\"Hello\", Swift" // "를 사용해서 Hello에 ""를 추가했습니다.
print(str) // "Hello", Swift

str = "Hello, \nSwift"
print(str) // \n 을 사용해서 줄 바꿈을 추가했습니다.

print("===========")
str = #"Hello\#nSwift"#
print(str) // 위의 코드와 같은 결과를 보여줍니다.

4. String Interpolation

< Format specifier >

String(format: "%.2f", 22.33434343434) // 22.33 소수점 2자리까지 출력합니다.
String(format: "Hi, %@", "Swift") // Hi Swift , /@이 Swift로 대체됩니다.
String(format: "%d", 100) // 정수를 대체합니다.
String(format: "[%d]", 200)
String(format: "[%10d]", 200)
String(format: "[%-10d]", 200)


let firstN = "DOIN"
let lastN = "KIM"

let name = "My name is %1$@%2$@."
String(format: name, firstN, lastN) // My name is DOINKIM.
let date = Date()
"오늘은 \(date) 입니다."

let temp = 15.2
"오늘은 \(temp)도 입니다."

Double.pi
"pi의 값은 \(Double.pi)입니다."

5. String Index

문자열에서 인덱스를 사용하는 이유는 유니코드의 독립적인 형태로 문자열을 처리하기 때문에 사용합니다.

let str = "Hello, Swift"

str[str.startIndex] // H , 첫 번째 인덱스 접근
//str[str.endIndex] // error, endIndex는 마지막 문자 다음의 인덱스를 나타냅니다. past the end

str[str.index(before: str.endIndex)] // t, 마지막 인덱스 접근 방법
str[str.index(after: str.startIndex)] // e 두 번째 인덱스 접근

str[str.index(str.startIndex, offsetBy: 2)] // l
str[str.index(str.endIndex, offsetBy: -2)] // f

6. String Basic

let a = String(300, radix: 16) // 숫자를 특정 진법으로 바꾸는 방법, 16진수로 변경했습니다.

let b = String(repeating: "안녕", count: 3) // 안녕안녕안녕, 특정 문자를 원하는 갯수만큼 채워서 출력하는 방법입니다.

var str = "Hello, Swift"

str += "\t어렵다!" // Hello, Swift 어렵다!

str.count // 문자열의 길이를 확인합니다.
str.isEmpty // 문자열이 비어있는지 확인합니다.
str.uppercased() // 문자열의 모든 문자를 대문자로 변경합니다.
str.lowercased() // 문자열의 모든 문자를 소문자로 변경합니다.
str.contains("H") // true, 문자열에 포함되어 있는 문자를 확인할때 사용합니다.

str = "hello, swift"

str.capitalized // 문자열의 각 문자의 첫 번째 문자를 대문자로 변경합니다.

let strA = "안녕하세요 블로그에 오신 걸 환영합니다."

strA.randomElement() // 문자열에서 랜덤으로 문자를 뽑아줍니다.
strA.shuffled() // 문자열에 포함된 문자를 랜덤으로 섞어서 문자 배열로 리턴해줍니다.

7. SubString

  • 하나의 문자열에서 특정 범위에 있는 문자열을 서브 스트링이라고 합니다.
  • 서브 스트링은 원본 문자열의 메모리를 공유합니다. 
  • 값을 읽을 때는 원본 메모리를 공유하고, 값을 변경할 때 새로운 메모리가 생성됩니다.
  • 새로운 문자열을 생성하고 싶을 때는 String 생성자를 사용합니다.
var str = "iPhone Pro Max"

str.prefix(1) // i
str.prefix(2) // ip
str.insert("!", at: str.endIndex) // iPhone Pro Max!
str.insert(contentsOf: "!!!!", at: str.endIndex) // iPhone Pro Max!!!!!

// 문자열 특정 범위 추출
str[str.startIndex ..< str.index(str.startIndex, offsetBy: 4)] // iPho
str[str.index(str.startIndex, offsetBy: 4)...] // ne Pro Max!!!!! , 특정 인덱스부터 마지막까지 추출합니다.

let lower = str.index(str.startIndex, offsetBy: 0)
let upper = str.index(str.startIndex, offsetBy: 10)
str[lower...upper] // iPhone Pro

 

728x90

'Swift' 카테고리의 다른 글

String Compare, Search, Option  (0) 2020.11.19
String Editing  (0) 2020.11.19
Tuple  (0) 2020.11.17
Closures  (0) 2020.11.16
Function  (0) 2020.11.12