궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
SWIFT/Grammar

Swift : 기초문법 [String의 프로퍼티 및 메서드]

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

String의 프로퍼티 및 메서드

Swift를 사용해오면서 우리는 지금까지 많은 String 을 사용해왔고, Swift에서 StirngStruct 라는것을 알게 되었습니다. 그리고 이 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("아무것도 들어있지 않습니다.")
}
//아무것도 들어있지 않습니다.

다시 한번 말하지만 isEmptyArray, Set, String 등 기타 컬렉션 유형에서 모두 사용 가능합니다.

TIP
 
 

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: 문제를 풀려면 이곳을 클릭해주세요.

 

 

읽어주셔서 감사합니다🤟


잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.