![Swift : 기초문법 [String의 프로퍼티 및 메서드] Swift : 기초문법 [String의 프로퍼티 및 메서드]](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
String의 프로퍼티 및 메서드
Swift를 사용해오면서 우리는 지금까지 많은 String
을 사용해왔고, Swift에서 Stirng
은 Struct
라는것을 알게 되었습니다. 그리고 이 String
에는 자체 메서드
와 프로퍼티
를 가지고 있습니다.
let string = "서근 개발 노트 블로그 입니다."
1. Count
count
프로퍼티를 사용하여 문자열의 문자 개수를 셀 수 있습니다.
print(string.count) //17
var toys = "" if toys.count == 0 { print("아무것도 들어있지 않습니다.") } //아무것도 들어있지 않습니다.
2. hasPrefix()
hasPrefix()
문자열이 특정 문자로 시작하면 true를 반환하는 메서드가 있습니다. 첫 단어만 허용됩니다.
print(string.hasPrefix("서근")) //true
3. uppercased()
uppercased()
메서드를 호출하여 문자열을 대문자로 바꿀 수 있습니다.
let string = "Hello, my name is Seogun" print(string.uppercased()) //HELLO, MY NAME IS SEOGUN
4. sorted()
sorted()
메서드를 호출하여 문자열의 텍스트를 배열로 정렬하도록 할 수도 있습니다.
let students: Set = ["다", "라", "사", "가", "나", "마", "바"] let sortedStudents = students.sorted() print(sortedStudents) //["가", "나", "다", "라", "마", "바", "사"]
5. contains()
contains()
메서드를 호출하여 요소가 시퀀스에서 발견 된 경우 true
, 그렇지 않으면 false
를 출력하게 할 수 있습니다.
let cast = ["서근", "포뇨", "하울", "소피아"] print(cast.contains("서근")) // Prints "true" print(cast.contains("소스케")) // Prints "false"
6. isEmpty
Array
, Set
, String
등 기타 컬렉션 유형
이 비어 있는지 확인하려면 다음과 같은 코드를 작성할 수 있습니다.
var toys = "" if toys.count == 0 { print("아무것도 들어있지 않습니다.") }
하지만, isEmpty
를 사용하면 읽기가 더 명확하고 실행이 더 빨라집니다.
var toys = "" if toys.isEmpty { print("아무것도 들어있지 않습니다.") } //아무것도 들어있지 않습니다.
다시 한번 말하지만 isEmpty
는 Array
, Set
, String
등 기타 컬렉션 유형
에서 모두 사용 가능합니다.
Stirng
에는 더 많은 프로퍼티와 메서드가 있습니다. Xcode에서 다양한 옵션들을 확인해보는 것이 좋습니다.
Stirng은 왜 Struct 인가요?
다른 많은 언어에서 문자열은 구조체가 아닙니다. 문자의 시퀀스 일 뿐이죠.
Swift는 다른 접근 방식을 취합니다. 문자열은 구조체이며 실제로 그 기능이 많이 있습니다.
거의 모든 Swift의 핵심 유형은 strings
, integers
, arrays
, dictionaries
, 심지어 Booleans
을 포함하여 모두 구조체로 구현됩니다. 구조체는 Swift에서 간단하고 빠르며 효율적입니다. 즉, 필요한 만큼 만들고 제거할 수 있습니다.
그러나 문자열은 약간 복잡할 수 도 있습니다.
예를 들어 영어 알파벳과 같은 것은 26 개의 소문자와 26 개의 대문자를 사용하지만, Swift는 한국어, 일본어, 히브리어, 아랍어, 키릴 자모, 타밀어 등 다른 스크립트도 처리할 수 있어야 합니다. 심지어 50,000 개 이상의 한자가 있죠!
제일 복잡한 부분은 이모지를 다루는 방법입니다. 왜냐하면 피부톤과 성별에는 셀 수 없이 많은 변화가 있기 때문입니다.
각각의 이모지를 고유한 "문자"로 저장하는 대신, 이것들은 여러 개의 특별한 문자로 분해됩니다.
예를 들어,
"왼쪽 여자는 밝은 피부톤이고 오른쪽 여자는 중간 어두운 피부톤인 두 여자가 손을 잡고 있다"
라는 이모지는 실제로 다음과 같이 저장합니다.
- Woman
- Light skin tone
- Joined to
- Shaking hands
- Joined to
- Woman
- Medium-dark skin tone
그래서, 실제로 한 개의 이모지를 저장하기 위해 서는 일곱 개의 "문자"를 사용합니다. 엄청 복잡하죠..?
결과적으로, Swift는 문자열을 처리하는 모든 기능을 문자열 자체에 캡슐화
합니다. 아래와 같이 말이죠.
print(string.count) print(string.hasPrefix("Hello")) print(string.uppercased()) print(string.sorted())
이모지를 잘못 셀 염려 없이 카운트 속성 등의 기능을 사용할 수 있다는 뜻입니다.
이모티콘으로 문자열을 정렬하고 난 후, 이모티콘 내의 개별 문자가 분리되면 많은 문제가 발생합니다.
다행스럽게도 Swift의 문자열은 우리를 위해이 모든 작업을 처리하도록 설계되었으며 여기저기서 몇 가지 에러를 유발하지만 전반적인 이점은 엄청납니다 :)
예시
let username = "twostraws" username.uppercased() == "TWOSTRAWS"
var mac = "iMac" mac.hasPrefix("i") //true
var str = "" for i in 1...5 { str += "\(i)" } print(str.count) //5
import Swift let hello: String = "Hello" let Seogun: String = "Seogun" var greeting: String = hello + " " + Seogun + "☺️" print(greeting) // Hello Seogun☺️ greeting = hello greeting += " " greeting += Seogun greeting += "☺️" print(greeting) // Hello Seogun☺️ /*===연산자를 통한 문자열 비교===*/ var isSameString: Bool = false isSameString = hello == "Hello" print(isSameString) //true isSameString = Seogun == "seogun" print(isSameString) // false /*===메서드를 통한 접두어, 접미어 확인===*/ // 접두어 hasPrefix var hasPrefix: Bool = false hasPrefix = hello.hasPrefix("He") print(hasPrefix) //true hasPrefix = hello.hasPrefix("he") print(hasPrefix) // false hasPrefix = Seogun.hasPrefix("Seo") print(hasPrefix) // true hasPrefix = Seogun.hasPrefix("SEO") print(hasPrefix) // false // 접미어 hasSuffix var hasSuffix: Bool = false hasSuffix = hello.hasSuffix("He") print(hasSuffix) // false hasSuffix = hello.hasSuffix("llo") print(hasSuffix) // true hasSuffix = Seogun.hasSuffix("gun") print(hasSuffix) // true hasSuffix = greeting.hasSuffix("Seogun") print(hasSuffix) // false hasSuffix = greeting.hasSuffix("Seogun☺️") print(hasSuffix) // ture /*===메서드를 통한 대소문자 변환===*/ var convertedString: String = "" convertedString = hello.uppercased() print(convertedString) //HELLO convertedString = hello.lowercased() print(convertedString) // hello convertedString = greeting.uppercased() print(convertedString) // HELLO SEOGUN☺️ convertedString = Seogun.lowercased() print(convertedString) // seogun /*===프로퍼티를 통한 빈 문자열 확인===*/ var isEmptyString: Bool = false isEmptyString = hello.isEmpty print(isEmptyString) // false greeting = "" isEmptyString = greeting.isEmpty print(isEmptyString) // true /*===프로퍼티를 이용해 문자열 길이 확인===*/ print(greeting.count) // 0 greeting = "안녕하세요. 서근개발노트 입니다." print("greeting의 문자 개수는 \(greeting.count)개 입니다.") // greeting의 문자 개수는 18개 입니다. print(Seogun.count) // 6 /*===여러 줄의 문자열을 사용하려면 """ 사용===*/ greeting = """ 안녕하세요. 서근입니다. 저는 서근개발노트라는 블로그를 운영중입니다. 앞으로 잘 부탁드리겠습니다. """ print(greeting)
String의 프로퍼티 및 메서드 TEST: 문제를 풀려면 이곳을 클릭해주세요.
읽어주셔서 감사합니다🤟
'SWIFT > Grammar' 카테고리의 다른 글
swift : 기초문법 [ 프로퍼티 #1-1 지연 저장 프로퍼티(Lazy)] (0) | 2021.03.01 |
---|---|
Swift : 기초문법 [Array의 프로퍼티 및 메서드] (3) | 2021.02.28 |
Swift : 기초문법 [구조체 - Struct] (0) | 2021.02.26 |
Swift : 기초문법 [#4 후행 클로저에 매개변수 사용 ] (0) | 2021.02.25 |
Swift : 기초문법 [#3 후행 클로저 - Closure syntax] (0) | 2021.02.24 |