์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[Swift] ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ฐœ๋… ๋ชจ์Œ_๋ฌธ์ž์—ด

โŒจ๏ธ Cording Test/๐Ÿ“Œ

by AHN.Jihyeon 2024. 6. 3. 14:39

๋ณธ๋ฌธ

 


 

 

๐Ÿ‘‰๐Ÿป 1. ๋ฌธ์ž์—ด ์ธ๋ฑ์‹ฑ / ์Šฌ๋ผ์ด์‹ฑ

๋ฌธ์ž์—ด ์ธ๋ฑ์Šค๋Š” ์ •์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ์ธ๋ฑ์Šค๋Š” String.Index๋ผ๋Š” ํŠน๋ณ„ํ•œ ์ธ๋ฑ์Šค ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

let str = "jihyeon"

//ํŠน์ • ๋ฌธ์ž์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์œผ๋กœ ์ ‘๊ทผ
//์ฒซ๋ฒˆ์งธ ๋ฌธ์ž ์ถœ๋ ฅ
let first = str[str.startIndex]
print(first)                    //์ถœ๋ ฅ : j

//๋งˆ์ง€๋ง‰ ๋ฌธ์ž ์ถœ๋ ฅ
let lastIndex = str.index(before: str.endIndex)  //str.endIndex๋Š” ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ๋‹ค์Œ ์ธ๋ฑ์Šค
let last = str[lastIndex]
print(last)                     //์ถœ๋ ฅ : n

//์„ธ๋ฒˆ์žฌ ๋ฌธ์ž ์ถœ๋ ฅ
let thirdIndex = str.index(str.startIndex, offsetBy: 2)   // (String.Index , Int)
let third = str[thirdIndex]
print(third)                    //์ถœ๋ ฅ : h

//๋„ค๋ฒˆ์งธ ๋ฌธ์ž ์ถœ๋ ฅ(๋’ค์—์„œ๋ถ€ํ„ฐ ์ ‘๊ทผ)
let fourthIndex = str.index(str.endIndex, offsetBy: -4)
let fourth = str[fourthIndex]
print(fourth)

 

 

 

 

๐Ÿ‘‰๐Ÿป 2. ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰

//๐ŸŒŸ ๋‹จ์–ด ๊ฐฌ์ƒ‰ : contains()
//โœ… Character๋ฅผ ๋ฐ›์ง€๋งŒ StringProtocol, ํด๋กœ์ €๋ฅผ ๋ฐ›๋Š” ๋ฉ”์„œ๋“œ๋„ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—
//ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฌธ์ž/๋ฌธ์ž์—ด ์ „๋‹ฌ ๊ฐ€๋Šฅ -> retrun true/false


"hello".contains("he")    //์ถœ๋ ฅ : true
[1, 2, 3].contains(5)     //์ถœ๋ ฅ : false


//โœ… ๋ฌธ์ž์—ด์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„
var str = "Hello, Swift"
str.contains("swift")     //์ถœ๋ ฅ : false
str.lowercased().contains("swift")  //์ถœ๋ ฅ : true -> ๋น„๊ต๋Œ€์ƒ์˜ ์ผ€์ด์Šค๋ฅผ ์ผ์น˜์‹œํ‚จ ํ›„ ๋น„๊ต ๊ฐ€๋Šฅ



//๐ŸŒŸ ๋ฒ”์œ„ ๊ฐฌ์ƒ‰ : range(of: )
str.range(of: "swift", options: [.caseInsensitive])

 

 

 

 

๐Ÿ‘‰๐Ÿป 3. ๋ฌธ์ž์—ด์ด ๊ฐ™์€์ง€ ๋น„๊ต

let str = "Swift"

str == "Apple"       //์ถœ๋ ฅ : false
"apple" !=  "Apple"  //์ถœ๋ ฅ : true   ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„.

 

 

 

 

๐Ÿ‘‰๐Ÿป 4. ๋ฌธ์ž์—ด ๊ธธ์ด ๋ฐ˜ํ™˜

let str = "Hello Swift"
str.count     //์ถœ๋ ฅ : 11 (๊ณต๋ฐฑ๊นŒ์ง€ ์นด์šดํŒ…)
str.isEmpty   //๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธ. ์ถœ๋ ฅ : false

 

 

 

 

๐Ÿ‘‰๐Ÿป 5. ํŠน์ • ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค ๊ฐ’ ์ฐพ๊ธฐ

๐ŸŒŸ .startIndex  
var str = "ahnzihyeon"

str.startIndex
//์ฒซ ๋ฒˆ์งธ ๊ธ€์ž์— ์ ‘๊ทผ
str[str.startIndex]  //์ถœ๋ ฅ: "a"


๐ŸŒŸ .endIndex
str[str.endIndex] //๋งจ ๋งˆ์ง€๋ง‰ ๋‹ค์Œ Index


๐ŸŒŸ .index(before:)
//๋งˆ์ง€๋ง‰ ๊ธ€์ž์— ์ ‘๊ทผ
str[str.index(before: str.endIndex)]    //์ถœ๋ ฅ: "n"


๐ŸŒŸ .index(์‹œ์ž‘, offsetBy: Int)
//ํŠน์ • ์œ„์น˜์˜ ๊ธ€์ž์— ์ ‘๊ทผ
str.index(str.startIndex, offsetBy: 3)       //(์‹œ์ž‘ ์ง€์ , ๋–จ์–ด์ง„ ๊ธธ์ด)
str[str.index(str.startIndex, offsetBy: 3)]  //์ถœ๋ ฅ: "z"

โœ… Swift String์—์„œ๋Š” ์ธ๋ฑ์Šค๋กœ Int๊ฐ€ ์•„๋‹Œ

-> return String.Index

 

โœ… ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ ๋ฌธ์ž์˜ Index ๋ฆฌํ„ด

 

 

 

๐Ÿ‘‰๐Ÿป 6. ๋ฌธ์ž์—ด์„ ๊ตฌ๋ถ„์ž ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ํ•ฉ์น˜๊ธฐ

let text = "one,two;three four"
 
//components(separatedBy:) 
//๊ตฌ๋ถ„์ž ํƒ€์ž…: ๋‹จ์ผ ๋ฌธ์ž, ๋ฌธ์ž์—ด(String) ๋˜๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด([String]) 
let strArr = text.components(separatedBy: [",", ";", " "])
print(strArr) // ["one", "two", "three", "four"]


//split(separator: )
//๊ตฌ๋ถ„์ž ํƒ€์ž…: ๋ฌธ์ž(Character)
let text = "one,two,three"
let parts = text.split(separator: ",")
print(parts) // ["one", "two", "three"]
 
for part in parts {
    print(part) // ๊ฐ๊ฐ์˜ ์š”์†Œ๋Š” Substring
}
 
// Substring์„ String์œผ๋กœ ๋ณ€ํ™˜
let strParts = parts.map { String($0) }
print(strParts) // ["one", "two", "three"]

 

https://dkswlgus0314.tistory.com/167

 

 

 

 

 

๐Ÿ‘‰๐Ÿป 7. ๋ฌธ์ž์—ด ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜

var name = "aHnzIhYeoN"
var cha: Character = "a"



//์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
name.lowercased() //์ถœ๋ ฅ: "ahnzihyeon" 
cha.isLowercase   //์ถœ๋ ฅ: true
                  //๐Ÿšจ isLowercase๋Š” Character์ด์–ด์•ผ ํ•œ๋‹ค!!!!

//๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
name.uppercased() //์ถœ๋ ฅ: "AHNZIHYEON"
cha.isUppercase   //์ถœ๋ ฅ: false

 

 

 

๐Ÿ‘‰๐Ÿป 8. ๊ธฐ์กด ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์น˜ํ™˜

//ing/ed๊ฐ€ ๋ถ™์–ด ์žˆ์œผ๋ฉด ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋ฆฌํ„ด, ์—†์œผ๋ฉด ์›๋ณธ์„ ํŽธ์ง‘
var str = "Hello, Swift"


//1. replaceSubrange(<#T##subrange: Range<String.Index>##Range<String.Index>#>, with: <#T##Collection#>)
if let range = str.range(of: "Swift") { //ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•ด์„œ ๋ฒ”์œ„๋ฅผ ๋ฆฌํ„ด, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์œผ๋ฉด nil ๋ฆฌํ„ด
    str.replaceSubrange(range, with: "Apple")
}
print(str)  // ์ถœ๋ ฅ : Hello, Apple


//2. replacingCharacters(in: <#T##RangeExpression#>, with: <#T##StringProtocol#>)
if let range = str.range(of: "Hello") {
    let s = str.replacingCharacters(in: range, with: "Hi") //(๋ฒ”์œ„, ๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด)
    print(s)    //์ถœ๋ ฅ : Hi, Apple
}
print(str)  //์ถœ๋ ฅ : Hello, Apple. -> ing๊ฐ€ ๋ถ™์œผ๋ฉด ์›๋ณธ์€ ๋ฐ”๊พธ์ง€ ์•Š์Œ


//3. replacingOccurrences(of: <#T##StringProtocol#>, with: <#T##StringProtocol#>)
var s = str.replacingOccurrences(of: "Apple", with: "Smart Swift") //Swift๋ผ๋Š” ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด With์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
print(s)   //์ถœ๋ ฅ : Hello, Smart Swift


//4. ๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ ์˜ต์…˜
s = str.replacingOccurrences(of: "apple", with: "Awesome Swift", options: [.caseInsensitive]) //๋ฌธ์ž์—ด์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์‹œํ•˜๊ณ  ์‹ถ์œผ๋ฉด options ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€
print(s)  //์ถœ๋ ฅ : Hello, Awesome Swift

 

 

๐Ÿ‘‰๐Ÿป 9.  ํŠน์ • ๋ฌธ์ž(ํ˜น์€ ๊ณต๋ฐฑ) ์ œ๊ฑฐ

๐ŸŒŸ components(separatedBy:[" "])  
//์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•œ ๋ถ„ํ• ๋œ ๋ฐฐ์—ด์„ ๋ฆฌํ„ด
var str = "bus"
str.components(separatedBy:["u"])  //์ถœ๋ ฅ : ["b", "s"]

 

 

 

๐Ÿ‘‰๐Ÿป 10. ์•„์Šคํ‚ค์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ ํ˜น์€ ๋Œ€์†Œ ๋น„๊ต

๋ฌธ์ž์—ด์—์„œ๋Š” ์ˆซ์ž์™€ ๊ฐ™์€ ํฌ๊ธฐ์˜ ๊ฐœ๋…์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์˜ ์ˆœ์„œ๋ฅผ ๋น„๊ตํ•œ๋‹ค. 

๊ฐ ๋ฌธ์ž๋งˆ๋‹ค ๊ณ ์œ ์˜ ์ˆซ์ž๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด ์ˆซ์ž๋“ค์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ.

 

let str = "Swift"

str == "Apple"       //์ถœ๋ ฅ : false
"apple" !=  "Apple"  //์ถœ๋ ฅ : true   ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„.


//๋ญ„์ž์— ํ• ๋‹น๋˜ ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•œ๋‹ค.
//์•„์Šคํ‚ค ์ฝ”๋“œ
("A" as Character).asciiValue //์ถœ๋ ฅ : 65
("a" as Character).asciiValue //์ถœ๋ ฅ : 97
("B" as Character).asciiValue //์ถœ๋ ฅ : 66

"apple" <  "Apple"  //์ถœ๋ ฅ : false
"apple" < "Banana"  //์ถœ๋ ฅ : false

 

 

 

 

๐Ÿ‘‰๐Ÿป 11. ๋ฌธ์ž์—ด ๋ฐ˜๋ณต

//๋ฌธ์ž์—ด ๋ฐ˜๋ณต
let repeatStr = String(repeating: "์˜ค์˜ˆ!", count: 3) //์ถœ๋ ฅ :์˜ค์˜ˆ!์˜ค์˜ˆ!์˜ค์˜ˆ!
print(repeatStr)

 

 

 

 

๐Ÿ‘‰๐Ÿป 12. ๋ฌธ์ž์—ด ๋žœ๋ค 

let strNum = "1234657890"

strNum.randomElement()   //๋žœ๋ค์œผ๋กœ ํ•˜๋‚˜ ๋ฝ‘๊ธฐ.  ์ถœ๋ ฅ : Optional("2")

strNum.shuffled() //์ถœ๋ ฅ :["4", "7", "3", "9", "2", "1", "0", "8", "6", "5"]

String(strNum.shuffled()) //์ถœ๋ ฅ : "2416087539"

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ