(一)身份证号本知识
举例某个同学的身份证信息,
前2位是省市的信息;
后四位是具体的乡镇信息;
接下来8位是生日;
倒数第2位表示性别;
最后一位是校验码;
(二)实现:输入身份证号输出基本信息
例子:
*应用:从身份证号中解析出基本信息
*实例:422345200509298756
*
*(1) 省份:42 湖北
*(2) 市区,乡镇 2345
*(3) 出生年份 2005
*(4) 出生日期 0929
*(5) 顺序码 87
*(6) 倒数第二位 5, 奇数表示性别:男, 偶数:女
*(7) 最后一位,是校验码,验证这个身份证号是不是瞎编!!!
*/
object string02 {
def getGender(idCard:String):String = {
val gender = idCard.substring(16,17).toInt
if(gender % 2 == 0)
"女"
else
"男"
}
def getBirthday(idCard:String):String = {
val year = idCard.substring(6,10)
val month = idCard.substring(10,12)
val day = idCard.substring(12,14)
year+"-"+month+"-"+day
}
def getage(idCard: String): Int = {
val year = idCard.substring(6, 10).toInt
// 获取当前年份
val currentYear = LocalDate.now().getYear
currentYear - year
}
def getProvince(idCard:String):String = {
val procode = idCard.substring(0,2)
val provinceMap = scala.collection.immutable.Map(
"42" -> "湖北省",
"11" -> "北京市",
"12" -> "天津市",
"13" -> "河北省",
"14" -> "山西省",
"15" -> "内蒙古自治区",
"21" -> "辽宁省",
"22" -> "吉林省",
"23" -> "黑龙江省",
"31" -> "上海市",
"32" -> "江苏省",
"33" -> "浙江省",
"34" -> "安徽省",
"35" -> "福建省",
"36" -> "江西省",
"37" -> "山东省",
"41" -> "河南省",
"43" -> "湖南省",
"44" -> "广东省",
"45" -> "广西壮族自治区",
"46" -> "海南省",
"50" -> "重庆市",
"51" -> "四川省",
"52" -> "贵州省",
"53" -> "云南省",
"54" -> "西藏自治区",
"61" -> "陕西省",
"62" -> "甘肃省",
"63" -> "青海省",
"64" -> "宁夏回族自治区",
"65" -> "新疆维吾尔自治区",
"71" -> "台湾省",
"81" -> "香港特别行政区",
"82" -> "澳门特别行政区"
)
provinceMap.getOrElse(procode, "未知省份")
}
def getConstellation(month: Int, day: Int): String = {
month match {
case 1 if day >= 20 => "水瓶座"
case 1 => "摩羯座"
case 2 if day >= 19 => "双鱼座"
case 2 => "水瓶座"
case 3 if day >= 21 => "白羊座"
case 3 => "双鱼座"
case 4 if day >= 20 => "金牛座"
case 4 => "白羊座"
case 5 if day >= 21 => "双子座"
case 5 => "金牛座"
case 6 if day >= 22 => "巨蟹座"
case 6 => "双子座"
case 7 if day >= 23 => "狮子座"
case 7 => "巨蟹座"
case 8 if day >= 23 => "处女座"
case 8 => "狮子座"
case 9 if day >= 23 => "天秤座"
case 9 => "处女座"
case 10 if day >= 24 => "天蝎座"
case 10 => "天秤座"
case 11 if day >= 23 => "射手座"
case 11 => "天蝎座"
case 12 if day >= 22 => "摩羯座"
case 12 => "射手座"
case _ => "未知星座"
}
}
def getConstellationFromIdCard(idCard: String): String = {
// 提取月份(10-12位)和日期(12-14位)并转为整数
val month = idCard.substring(10, 12).toInt
val day = idCard.substring(12, 14).toInt
getConstellation(month, day)
}
def main(args: Array[String]): Unit = {
val idCard = "429005200010100026"
val gender =getGender(idCard)
val birthday = getBirthday(idCard)
val age = getage(idCard)
val province = getProvince(idCard)
val constellation = getConstellationFromIdCard(idCard)
// 输出 一些基本信息
println(
s"""
性别:${gender}
生日:${birthday}
籍贯:${province}
年龄:${age}
星座:${constellation}
""")
}
}
结果:
性别:女
生日:2000-10-10
籍贯:湖北省
年龄:25
星座:天秤座