(正如@NiravD指出的,用于预夫特3时,使用 where 加入的多子句的条件部分 . 用于SWIFT 3,多条条件部分被简单地通过加入 , . 对于以下两种方法中,都夫特2.2和3版本包括在内)
对数字字符使用模式匹配“0”...“9”
Swift 2.2
extension String {
var lastThreeLettersAreNumbers: Bool {
if case let chars = characters.suffix(3) where chars.count > 2 {
let numbersPattern = Character("0")..."9"
return chars.reduce(true) { $0 && (numbersPattern ~= $1) }
}
return false
}
}
Swift 3
extension String {
var lastThreeLettersAreNumbers: Bool {
if case let chars = characters.suffix(3), chars.count > 2 {
let numbersPattern = Character("0")..."9"
return chars.reduce(true) { $0 && (numbersPattern ~= $1) }
}
return false
}
}
/* example usage, common for both Swift 2.2/3 version */
let str1 = "SACH092"
let str2 = "SACH0B2"
print(str1.lastThreeLettersAreNumbers) // true
print(str2.lastThreeLettersAreNumbers) // false
使用flat初始化器使用nil-return Int和flatMap
您可以利用 Int by String 初始化程序为无法表示为整数的字符串返回 nil 这一事实 .
Swift 2.2
extension String {
var lastThreeLettersAreNumbers: Bool {
if case let chars = characters.suffix(3) where chars.count > 2 {
return chars.flatMap{Int(String($0))}.count == 3
}
return false
}
}
Swift 3
extension String {
var lastThreeLettersAreNumbers: Bool {
if case let chars = characters.suffix(3), chars.count > 2 {
return chars.flatMap{Int(String($0))}.count == 3
}
return false
}
}
/* example usage, common for both Swift 2.2/3 version */
let str1 = "SACH092"
let str2 = "SACH0B2"
print(str1.lastThreeLettersAreNumbers) // true
print(str2.lastThreeLettersAreNumbers) // false
3
要获得最后3个字符,
let exampleString = "SACH092"
let last3Char = exampleString.substringFromIndex(exampleString.endIndex.advancedBy(-3))
检查last3Char是否包含所有数字,
let badCharacters = NSCharacterSet.decimalDigitCharacterSet().invertedSet
if last3Char.rangeOfCharacterFromSet(badCharacters) == nil {
print("String contains all digits")
} else {
print("String contains non-digit characters")
}
0
实现字符串控制的最佳方法是使用正则表达式 .
为了你 :
var str = "SACH092"
let pattern = "^.*[0-9]{3,3}$"
let regexp = try! NSRegularExpression(pattern: pattern, options: [])
let matches = regexp.matches(in: str, options: [], range: NSMakeRange(0, str.characters.count))
print("End with 3 numbers : \(matches.count > 0)")
1
你可以像这样使用
let s : NSString = "SACH092"
let trimmedString: String = (s as NSString).substringFromIndex(max(s.length-3,0))
print(trimmedString.isNumeric) // return true or false
5 回答
(正如@NiravD指出的,用于预夫特3时,使用
where
加入的多子句的条件部分 . 用于SWIFT 3,多条条件部分被简单地通过加入,
. 对于以下两种方法中,都夫特2.2和3版本包括在内)对数字字符使用模式匹配“0”...“9”
Swift 2.2
Swift 3
使用flat初始化器使用nil-return Int和flatMap
您可以利用
Int
byString
初始化程序为无法表示为整数的字符串返回nil
这一事实 .Swift 2.2
Swift 3
要获得最后3个字符,
检查last3Char是否包含所有数字,
实现字符串控制的最佳方法是使用正则表达式 .
为了你 :
你可以像这样使用
//扩展字符串
获取字符串的最后三个字母
要检查这些字符是数字,