Swift - String(1_format)

이한솔·2023년 9월 11일
0

Swift 문법 🍎

목록 보기
21/32

문자열

String: Character 타입(문자) 값의 집합을 표현한 것, 구조체, 값 형식
NSString: 클래스, 참조 형식

💡 String과 NSString는 타입캐스팅으로 서로 호환된다.

문자열 리터럴 (String Literals)

문자열 리터럴은 상수나 변수의 초기 값을 사용할 수 있도록 한다.

let someString = "Some string literal value"

빈 문자열 초기화, 문자열 개수 구하기

빈 문자열은 String 인스턴스를 초기화 하거나 빈 문자열 리터럴 값을 변수에 할당한다.
isEmpty 속성으로 빈 문자열인지 확인 가능하다.

var emptyString = ""               // 빈 문자열
var anotherEmptyString = String()  // 초기화 구문

if emptyString.isEmpty {
    print("빈 문자열")
}
// 출력값: 빈 문자열

let str = "Hello"
print(str.count) // 출력값: 5

문자열 반복

let repeatStr = String(repeating: "😀", count: 2)
print(repeatStr)
// 출력값: 😀😀

그 외

// 문자열 비교하기
str == "Apple"
"apple" != str // true
"apple" < str // false, 아스키코드 참고

// 숫자 123을 16진수 문자열로 바꾸는 것
let hex = String(123, radix: 16)

str.lowercased() // 모든 문자를 소문자로 바꾸기
str.uppercased() // 모든 문자를 대문자로 바꾸기
str.capitalized // 첫번째 글자 대문자로, 나머지 소문자로 바꾸기

// 문자 반복하기
for char in "Hi" {
    print(char)
}
// 출력값 : H
//        i

let num = "123456789"
num.randomElement() // 랜덤 문자열 
num.shuffled() // 문자열 섞기 


String Format

정수형 변환

String(format: "%d", 12)
// 출력값: "12" 
// d, D: 정수 대체

String(format:"[%10d]", 123)
// 출력값: [       123]

String(format:"[%-10d]", 123)
// 출력값: [123       ]

String(format: "%d%%", 123)
// 출력값: 123%
//%를 사용하고싶으면 %% 두개를 붙여서 사용해야함

문자열 변환

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

let firstName = "hansol"
let lastName = "Lee"

// 각 인수를 받아서 사용 가능 ($1, $2)
let korFormat = "내 이름은 %2$@ %1$@"
let engFormat = "My name is %@ %@"

String(format: korFormat, firstName, lastName)
String(format: engFormat, firstName, lastName)
// 내 이름은 hansol Lee
// My name is hansol Lee

실수형 변환

let Num1: Float = 12.123
let Num2: Float = 45.456
// 변화를 확인하기 위해 []로 구분을 지어줌, 사용 시 [] 제거!

String(format:"[%f]", Num1)                     
// 출력값: [12.123000]

// 소수점 첫 째 자리까지 출력
String(format:"[%.1f]", Num1)                   
// 출력값:  [12.1]

// 소수점 둘 째 짜리까지 출력
String(format:"[%.2f]", Num1)                   
// 출력값: [12.12]

// 문자의 길이는 10개, 소수점 둘 째 짜리 출력 (오른쪽 정렬)
String(format:"[%10.2f]", Num1)                 
// 출력값: [     12.12]

// 문자의 길이는 10개, 소수점 둘 째 짜리 출력 (왼쪽 정렬)
String(format:"[%-10.2f]", Num1)                
// 출력값: [12.12     ]

// 문자의 길이는 10개, 공백을 0으로 채움, 소수점 둘 째 자리까지 출력
String(format:"[%010.2f]", Num1)                
// 출력값: [0000012.12]

// 여러 인수 사용가능
String(format:"[%.1f, %.1f]", Num1, Num2)      
// 출력값:[12.1, 45.5]

// 만약 첫 번재 인수와 두 번째 인수와 위치를 바꿔주려면
// 1$(첫 번째 인수), 2$(두 번째 인수)를 사용하여 위치를 변경이 가능.
String(format:"[%2$.1f, %1$.1f]", Num1, Num2)  
// 출력값: [45.5, 12.1]


Escape Sequence

String literal 안에서 특별하게 해석되는 단일문자 혹은 문자열이다.
Swift에서는 백슬래시\를 사용한다.

var str = "\\"
print(str) 
// 출력값: \
// 문자열리터럴에 백슬래쉬는 `\` 단독으로 사용 불가능, 두개 연속으로 써야함

print("A\tB")  
// \t: tap
// 출력값: A    B

print("A\nB")
// \n: 줄바꿈
// 출력값: A
//       B

print("\"Hello\", hansol")
// 출력값: "Hello", hansol


Extended String Delemeters

Extended String Delimiters를 사용하면 raw string literal를 나타낼 수 있게 된다. 
#"String literal"#

print(#""Hello" he said."#)
// 출력값: "Hello" he said.

print(#""Hello"\n he said."#)
// 출력값: "Hello" \n he said.

// 기존의 탭이나 줄바꿈 문자를 그대로 사용하려면 Escape Sequance로 인식시켜야함.
print(#""Hello"\#n he said."#)
// 출력값: "Hello"
//        he said.

let value = 123
print(#"The value is \(value)."#)
// 출력값: The value is \(value).

print(#"The value is \#(value)."#)
// 출력값: The value is 123.

0개의 댓글