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) //퍼센트 문자 추가 %% 두개 입력
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 |
댓글