iOS/Swift

[Swift] μ •κ·œμ‹μ„ ν†΅ν•œ λ¬Έμžμ—΄ νŒλ‹¨

κ²½ν‘Έ 2022. 11. 14. 18:30
λ°˜μ‘ν˜•

μ•ˆλ…•ν•˜μ„Έμš”~

 

μ˜€λŠ˜μ€ μ •κ·œμ‹μ„ 톡해 λ¬Έμžμ—΄μ„ νŒλ‹¨ν•˜λŠ” 방법에 λŒ€ν•΄μ„œ μ •λ¦¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€ : )

 

첫 번째, λ¬Έμžμ—΄ 전체가 νŠΉμ • κ·œμΉ™μ— λΆ€ν•©ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” 방법

let myString: [String] = ["λ‚˜λŠ”", "바보닀", "1597", "κ°€λ‚˜λ‹€123λΌλ§ˆλ°”4"]
let pattern: String = "^[0-9]*$" // 숫자 μ •κ·œμ‹ 

for string in myString {
    guard let _ = string.range(of: pattern, options: .regularExpression) else {
        print("\(string)은 숫자둜만 이루어지지 μ•Šμ•˜μ–΄μš”..")
        continue
    }
    print("\(string)은 숫자둜만 이루어져 μžˆλ„€μš”!")
}

myStringμ—μ„œ 숫자둜만 이루어진 λ¬Έμžμ—΄μ„ μ°ΎκΈ° μœ„ν•΄ 숫자만 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•œ μ •κ·œμ‹ "^[0-9]*$"λ₯Ό μ‚¬μš©ν•΄ ν™•μΈν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. μ •κ·œμ‹μ˜ μ‹œμž‘κ³Ό 끝은 [^, $]을 μ‚¬μš©ν•©λ‹ˆλ‹€.

 

두 번째, λ¬Έμžμ—΄μ˜ 일뢀가 νŠΉμ • κ·œμΉ™μ— λΆ€ν•©ν•˜λŠ”μ§€ 확인 ν•˜λŠ” 방법

1. ν•΄λ‹Ή κ·œμΉ™μ— λΆ€ν•©ν•˜λŠ” 첫번째 뢀뢄을 μ•Œμ•„μ•Ό ν•˜λŠ” 경우

let myString: [String] = ["λ‚˜λŠ”", "바보닀", "1597", "κ°€λ‚˜λ‹€123λΌλ§ˆλ°”4"]
let pattern: String = "[0-9]*"

for string in myString {
    guard let range = string.range(of: pattern, options: .regularExpression) else {
        print("\(string)μ—λŠ” μˆ«μžκ°€ μ—†μ–΄μš”...")
        continue
    }
    print("\(string)의 숫자둜 이루어진 뢀뢄은 \(string[range]) μž…λ‹ˆλ‹Ή") 
}

예λ₯Ό λ“€μ–΄μ„œ myString의 λ§ˆμ§€λ§‰ μš”μ†ŒμΈ "κ°€λ‚˜λ‹€123λΌλ§ˆλ°”4"μ—μ„œλŠ” 4κ°€ μ•„λ‹Œ 123이 숫자둜 이루어진 뢀뢄이라고 좜λ ₯되게 λ©λ‹ˆλ‹€.

 

2. ν•΄λ‹Ή κ·œμΉ™μ— λΆ€ν•©ν•˜λŠ” λͺ¨λ“  뢀뢄을 μ•Œμ•„μ•Ό ν•˜λŠ” 경우

do {
    let regex = try NSRegularExpression(pattern: pattern, options: [])
    let result = regex.matches(in: string, options: [], range: NSRange(location: 0, length: string.count))
    
    let matchedStrings = result.map { (element) -> String in
        let range = Range(element.range, in: string)!
        return String(string[range])
    }
    return matchedStrings
} catch let error {
    print(error.localizedDescription)
}

NSRegularExpression을 μ΄μš©ν•˜λ €λ©΄ do try catch ν˜Ήμ€ try?λ₯Ό μ΄μš©ν•΄μ•Ό ν•˜λ©° 

map을 μ΄μš©ν•΄ μΌμΉ˜ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ •κ·œμ‹

μ‹€μ œλ‘œ 많이 쓰이고 μžˆλŠ” μ •κ·œμ‹ λͺ‡ κ°€μ§€λ§Œ μ μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

숫자, μ˜μ–΄ μ†ŒλŒ€λ¬Έμž, ν•œκΈ€, 그리고 각쒅 특수문자만 μžˆλŠ”μ§€ νŒλ³„ν•˜κΈ° μœ„ν•œ μ •κ·œμ‹

^[0-9a-zA-Zκ°€-νž£γ„±-γ…Žγ…-γ…£`~!@#$%^&*()\\-_=+\\[{\\]}\\\\|;:'\",<.>/?\\s]$

μœ„μ˜ μ •κ·œμ‹μ„ κΈ°μ€€μœΌλ‘œ

숫자만

^[0-9]*$

μ˜μ–΄ λŒ€μ†Œλ¬Έμžλ§Œ

^[a-zA-Z]*$

μ˜μ–΄ 및 숫자만

^[0-9a-zA-Z]*$
λ°˜μ‘ν˜•