ma1*_*w28 32 string alphanumeric swift
在Swift中,我如何检查a String
是否是字母数字,即,它是否只包含一个或多个字母数字字符[a-zA-Z0-9]
,不包括带有变音符号的字母,例如é.
ma1*_*w28 56
extension String {
var isAlphanumeric: Bool {
return !isEmpty && range(of: "[^a-zA-Z0-9]", options: .regularExpression) == nil
}
}
"".isAlphanumeric // false
"abc".isAlphanumeric // true
"123".isAlphanumeric // true
"ABC123".isAlphanumeric // true
"iOS 9".isAlphanumeric // false
Run Code Online (Sandbox Code Playgroud)
gav*_*non 23
extension String {
func isAlphanumeric() -> Bool {
return self.rangeOfCharacter(from: CharacterSet.alphanumerics.inverted) == nil && self != ""
}
func isAlphanumeric(ignoreDiacritics: Bool = false) -> Bool {
if ignoreDiacritics {
return self.range(of: "[^a-zA-Z0-9]", options: .regularExpression) == nil && self != ""
}
else {
return self.isAlphanumeric()
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
"".isAlphanumeric() == false
"Hello".isAlphanumeric() == true
"Hello 2".isAlphanumeric() == false
"Hello3".isAlphanumeric() == true
"Français".isAlphanumeric() == true
"Français".isAlphanumeric(ignoreDiacritics: true) == false
Run Code Online (Sandbox Code Playgroud)
这适用于英语以外的语言,允许使用è和á等变音字符.如果您想忽略这些,请使用标记" ignoreDiacritics: true
".
car*_*onr 14
我觉得使用正则表达式接受的答案是具体的,但却是一个相当重的解决方案.您也可以在Swift 3.0中以这种方式检查它:
if yourString.rangeOfCharacter(from: CharacterSet.alphanumerics.inverted) != nil {
return "Username can only contain numbers or digits"
}
Run Code Online (Sandbox Code Playgroud)
extension String {
/// Allows only `a-zA-Z0-9`
public var isAlphanumeric: Bool {
guard !isEmpty else {
return false
}
let allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
let characterSet = CharacterSet(charactersIn: allowed)
guard rangeOfCharacter(from: characterSet.inverted) == nil else {
return false
}
return true
}
}
XCTAssertFalse("".isAlphanumeric)
XCTAssertFalse("climate change".isAlphanumeric)
XCTAssertFalse("Poüet".isAlphanumeric)
XCTAssertTrue("Hawking2018".isAlphanumeric)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19259 次 |
最近记录: |