iOS/Swift

[Swift] ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ ๋ฐ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ

๊ฒฝํ‘ธ 2022. 11. 12. 21:00
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”~

 

์˜ค๋Š˜์€ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด์„œ

๋‘ ๊ฐ€์ง€๋ฅผ ์ •๋ฆฌํ•ด ๋‘๊ณ  ๊ฐ€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : )

 

๋ฌธ์ž์—ด์„ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ•

- string.index(string.startIndex, offsetBy: number)๋ฅผ ํ™œ์šฉํ•˜๊ธฐ

- ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ range๋ฅผ ์กฐ์ •ํ•ด ์ž๋ฅธ ๋ฌธ์ž์—ด์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

var myString = "Hello, world!"

let startIndex = myString.index(myString.startIndex, offsetBy: 0)
let endIndex = myString.index(myString.startIndex, offsetBy: 5)

let output = myString[startIndex ..< endIndex]

print(output) // Hello

์œ„์˜ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ extension์— ์ ์šฉํ•˜๋ฉด

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

extension String {

	func subString(from: Int, to: Int) -> String {
    
    	guard from < count, to >= 0, to - from >= 0 else {
            return "์ž˜๋ชป์ž…๋ ฅํ•˜์…จ์Šต๋‹ˆ๋‹ค~"
        }
        
        let startIndex = index(self.startIndex, offsetBy: from)
        let endIndex = index(self.startIndex, offsetBy: to + 1)
        return String(self[startIndex ..< endIndex])
    }
}

print(myString.subString(from: 8, to: myString.count)) // world

 

ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ

1. ํ˜•๋ณ€ํ™˜

ํ•ด๋‹น ๋ฌธ์ž์—ด์„ Int, Double ๋“ฑ์œผ๋กœ ๋ฐ˜ํ™˜์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด ๋ณด๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

extension String {
    var isNumeric : Bool {
        return Double(self) != nil
    }
}

"1234".isNumeric // true
"1์•ˆ๋…•234".isNumeric // false

 

2. String์˜ rangeOfCharactert์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

extension String {

    var isNumeric : Bool {
        get{
           return !self.isEmpty && self.rangeOfCharacter(from: NSCharacterSet.decimalDigits.inverted) == nil
        }
    }
}

์ž ์‹œ ์œ„ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด

 

 

rangeOfCharacter๋ผ๋Š” ๋ฉ”์„œ๋“œ๋Š” ChracterSet์ด๋ผ๋Š” ๋ฌธ์ž๋“ค์˜ ์ง‘ํ•ฉ์„ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ index๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜ํ™˜ํ•˜๊ณ  ์—†๋‹ค๋ฉด nil์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค

 

์œ„์˜ ์ฝ”๋“œ๋Š” inverted๋ฅผ ์ด์šฉํ•ด ์ˆซ์ž๋งŒ์„ ํฌํ•จํ•  ๊ฒฝ์šฐ nil์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

3. allSatisfy๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

let isAllNumeric = "123".allSatisfy {
    $0.isNumber
}
print(isAllNumeric) // true

allSatisfy๋Š” ๊ฐ๊ฐ์˜ ์š”์†Œ๋“ค์„ ๋ชจ๋‘ ๊ฒ€์‚ฌํ•˜๊ณ 

์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด true ์ถฉ์กฑ๋˜์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•