ในการตรวจสอบว่าสตริงมีอักขระพิเศษใน 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")
} ผลลัพธ์
ผลลัพธ์ที่ได้แสดงไว้ด้านล่าง
