본문 바로가기
iOS Swift/문법

[Swift] 개념공부 3

by 야고이 2024. 2. 20.
728x90

Singleline String Literal 
Multiline String Literal 

import Foundation

//Singleine String Literal
let s = "Hello, World"


//[/n] 줄바꿈
let longS = "I wanna apple. U wanna banana.\n And he"


// multiline String Loteral
//반드시 새로운 라인에서 시작. 문자열은 따옴표 보다 오른쪽에 있어야한다.
// \백슬래시는 줄바꿈 취소. 결과상에선 줄바꿈이 적용되지 않음
let multiline = """
I wanna apple. 
    U wanna banana.
        And he
"""

 

문자열 타입


String Types 

//Swift String (Swift 문자열) : 구조체로 구현되어 있고 가평식?이다
//Foundation String : 문자열을 참조형식으로 처리하고 싶다면 클래스로 구현되어 있는 NSString를 사용하면 된다
//두가지 문자열 타입은 호환 되며 언제든지 바꿔 쓸 수 있다 -> [Toll-free Bridged Types]

var nsstr: NSString = "str"
let swiftStr: String = nsstr as String
nsstr = swiftStr as NSString

뭔말인지모르겠어


Mutability 

//문자열의 가변성은 let 과 var 로 구분된다

var str = "Hello"

str.append("Swift") 
//let으로 선언했을 때는 append 를 사용 못함. let 은 상수이니까 변경할 수 없기 때문. var 로 선언해야 함
//*append Method* : 원본 문자열에 새로운 문자열을 제공함


Character Type

//큰 따옴표에 포함된 문자수에 관계 없이 '문자열'로 추론된다
let c = "C"

//문자 타입으로 처리하고 싶다면 [Character Type] 를 명시적으로 선언해야한다
let b: Character = "B" //문자니까 글자 두개 이상을 저장할 순 없다
let b: Character = " " //빈 문자를 저장하려면 공백으로 남겨둬야한다

 


String Interpolation(문자열 보관/삽입)


//예제) 파일 사이즈를 문자열로 출력

//변수에 값 저장 -> 값을 바꾸기 어려움
var str = "12.34KB"

//상수에 값 저장
let size = 56.78
str = String(size) + "KB" //실수를 문자열로 바꿔서 타입을 일치 시켜야 한다 [size + "KB"] -> 이건 안됨

str = "\(size)KB" // 코드가 단순해짐. 포맷을 세부적으로 저장할 수 없음

 


Format Specifier (포맷 지정자 : 상세한 포맷을 지정하려면)

import Foundation

//예시
let size = 56.78
String(format: "%.5fKB", size) // [%.5f] (.5: 소수점 다섯자리 ,f : 실수)



//문자열과 참조 형식을 대체
String(format: "Hello, %@", "Swift")

//정수 대체
String(format: "%d", 12)

//실수 대체
String(format: "%f", 12.34)
String(format: "%.3f", 12.34) //소수점 세자리
String(format: "%10.3f", 12.34) //왼쪽에 빈문자가 생성. 전체를 10개로 포매팅 하고 그중에 문자3개 포맷팅
String(format: "%010.3f", 12.34) //비어 있는 문자를 0으로 채움

String(format: "[%d]", 123)
String(format: "[%10d]", 123) //오른쪽 정렬
String(format: "[%-10d]", 123) // 왼쪽 정렬
String(format: "[%10d]%%", 123) //퍼센트 문자 추가 %% 두개 입력

결과값 인스펙터에서 확인

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1

 

String Format Specifiers

String Format Specifiers This article summarizes the format specifiers supported by string formatting methods and functions. Format SpecifiersThe format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IE

developer.apple.com

 

Escape Sequence(탈출 문자) : 백슬래시 문자와 하나의 문자로 구성된 문자

//백슬래시는 단독으로 사용 할 수 없음 백슬래시 두개 연달아 사용
var str = "abc"

str = "\\"
print(str)

print("A\tB") // [\t] : tab
print("A\nB") // [\n] : 줄바꿈
print("\"Hello\" he said.") //큰따옴표를 문자열리터럴 안에서 사용 할 때

///Escape Sequence 사용하지 않고 큰따옴표를 사용 하는 법
"""
"Hello" he said.
""

결과값 확인 !


Extended String Delimeters : Escape Sequence 보다 가독성 좋고 간단히 코드를 작성할 수 있다

print(#""Hello" he said."#)
//Raw String : 문자열 리터럴을 샵#으로 감싼 것. 역슬래시와 큰따옴표를 문자 그대로 처리한다.

print(#""Hello"\#n he said."#) // [\#n] : 줄바꿈

//**반드시 양쪽의 샵의 갯수를 맞춰야한다

//raw string 사용예시
let value = 123
print(#"The value is \#(value)"#)

//멀티라인 스트링 리터럴 사용예시
let multiline = #"""
"Multiline"
String
Literal
"""#
print(multiline)

 

 

기타 이슈

String(firmat:) 입력시

No exact matches in call to initializer 가 뜬다면

상단에 import Foundation 추가 하면 된다

왜 자동 완성 안되지
해결

 

728x90

'iOS Swift > 문법' 카테고리의 다른 글

[Swift] String Basics  (0) 2024.02.21
[Swift] String Index  (0) 2024.02.20
[Swift] if, guard,switch Statement  (0) 2024.02.19
[Swift] 자료형과 연산자 개념  (0) 2024.02.16
[Swift] 개념공부  (0) 2024.02.15

댓글