ในการตรวจสอบว่าสตริงมีอักขระพิเศษใน swift หรือไม่ เราสามารถใช้ conditionals เช่น if else หรือ switch ได้ แต่จะต้องใช้เงื่อนไขจำนวนมากในการดำเนินการ ทำให้การเขียนโปรแกรมและการดำเนินการใช้เวลานาน ในตัวอย่างนี้ เราจะเห็นวิธีการทำงานเดียวกันกับนิพจน์ทั่วไปและอีกวิธีหนึ่งที่ช่วยให้รวดเร็วในการตรวจสอบว่ามีอักขระบางตัวในชุดอักขระหรือไม่
วิธีที่ 1 − การใช้นิพจน์ทั่วไป
มาสร้างส่วนขยายของ String และเพิ่มโค้ดต่อไปนี้ลงไป
extension String { var containsSpecialCharacter: Bool { let regex = ".*[^A-Za-z0-9].*" let testString = NSPredicate(format:"SELF MATCHES %@", regex) return testString.evaluate(with: self) } }
เราสามารถเรียกใช้โค้ดต่อไปนี้ตามตัวอย่างที่แสดงด้านล่าง
override func viewDidLoad() { super.viewDidLoad() print("3r42323".containsSpecialCharacter) print("!--%332".containsSpecialCharacter) }
ผลลัพธ์
นี่คือผลลัพธ์สำหรับวิธีที่ 1
ตอนนี้เราจะมาดูตัวอย่างเดียวกันกับวิธีที่ 2
วิธีที่ 2
let characterset = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ) if "3r42323".rangeOfCharacter(from: characterset.inverted) != nil { print("true") } else { print("false") } if "!--%332".rangeOfCharacter(from: characterset.inverted) != nil { print("true") } else { print("false") }
ผลลัพธ์
ผลลัพธ์ที่ได้แสดงไว้ด้านล่าง