在上一个手机号的基础上,改进代码,判断是否为正确的身份证号码。
用隐式类判断是否为身份证
目标: 让任意一个字符串具备一个功能:判断是否是一个合法的身份证
string类是系统提供的,并没有isIDCard这个方法 现在就要去在不修改String类的情况下,增加这个方法
package imp
/*
目标:让任意一个字符串具备一个功能:判断是否是一个合法的手机号
string类是系统提供的,并没有isPhon这个方法
现在就要去在不修改String类的情况下,增加这个方法
* */
object imp05 {
implicit class StrongString(s:String) {
def isPhon : Boolean={
val reg = "^1[35678]\d{9}$".r
reg.matches(s)
}
def isIDCard: Boolean = {
val idReg = "^\d{17}[0-9Xx]$".r // 简单18位格式验证,实际需更复杂校验
idReg.matches(s)
}
}
def main(args: Array[String]): Unit = {
val str = new String("13617295643")
//val str = "13617295643"
//str.isPhone()//判断自己是否是一个合法的手机号,返回值是boolen true,false
println(str.isPhon)
println("134567891a".isPhon)
println("130567891a".isPhon)
println("429005202011012231".isIDCard)//true
println("40900520201101223a".isIDCard)//false
}
}
老师讲
package imp
/*
目标:让任意一个字符串具备一个功能:判断是否是一个合法的手机号
string类是系统提供的,并没有isPhon这个方法
现在就要去在不修改String类的情况下,增加这个方法
* */
object imp05 {
implicit class StrongString(s:String) {
def isPhon : Boolean={
val reg = "^1[35678]\d{9}$".r
reg.matches(s)
}
def isIDCard: Boolean = {
val reg = "^[1-9]\d{5}([181920])\d{2}((0[1-9])|(1[0-2]))((0[1-9]|[1-9])|10|20|30|31)\d{3}[0-9Xx]$".r
reg.matches(s)
}
}
def main(args: Array[String]): Unit = {
val str = new String("13617295643")
//val str = "13617295643"
//str.isPhone()//判断自己是否是一个合法的手机号,返回值是boolen true,false
println(str.isPhon)
println("134567891a".isPhon)
println("130567891a".isPhon)
println("429005202011012231".isIDCard)//true
println("40900520201101223a".isIDCard)//false
}
}