package stringid
import java.time.LocalDate
object stringid03 {
def getGender(idCard:String):String={
val g=idCard.substring(16,17).toInt
if (g%2==1){
"男"
}else{
"女"
}
}
def getAge(idCard:String):Int={
val year=idCard.substring(6,10)
LocalDate.now().getYear-year.toInt
}
def getProvince(idCard:String):String={
val code=idCard.substring(0,2)
val map =Map( "11" -> "北京",
"12" -> "天津",
"13" -> "河北",
"14" -> "山西",
"15" -> "内蒙古",
"21" -> "辽宁",
"22" -> "吉林",
"23" -> "黑龙江",
"31" -> "上海",
"32" -> "江苏",
"33" -> "浙江",
"34" -> "安徽",
"35" -> "福建",
"36" -> "江西",
"37" -> "山东",
"41" -> "河南",
"42" -> "湖北",
"43" -> "湖南",
"44" -> "广东",
"45" -> "广西",
"46" -> "海南",
"50" -> "重庆",
"51" -> "四川",
"52" -> "贵州",
"53" -> "云南",
"54" -> "西藏",
"61" -> "陕西",
"62" -> "甘肃",
"63" -> "青海",
"64" -> "宁夏",
"65" -> "新疆",
"71" -> "台湾",
"81" -> "香港",
"82" -> "澳门")
map.getOrElse(code,"未知")
}
def getZodiac(idCard: String): String = {
val month = idCard.substring(10, 12).
toInt
val day = idCard.substring(12, 14).
toInt
var res = ""
if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) res = "水瓶座"
else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) res = "双鱼座"
else if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) res = "白羊座"
else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) res = "金牛座"
else if ((month == 5 && day >= 21) || (month == 6 && day <= 21)) res = "双子座"
else if ((month == 6 && day >= 22) || (month == 7 && day <= 22)) res = "巨蟹座"
else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) res = "狮子座"
else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) res = "处女座"
else if ((month == 9 && day >= 23) || (month == 10 && day <= 23)) res = "天秤座"
else if ((month == 10 && day >= 24) || (month == 11 && day <= 22)) res = "天蝎座"
else if ((month == 11 && day >= 23) || (month == 12 && day <= 21)) res = "射手座"
else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) res = "摩羯座"
res
}
def getZodiacDesc(zodiac: String): String = {
val map = Map(
"金牛座"->"性格描述:务实稳重,重视物质和安全感,但有时固执保守,缺乏变通。",
"双子座"->"性格描述:聪明灵活,好奇心强,适应力佳,但有时不够专注,缺乏耐心。",
"巨蟹座"->"性格描述:温柔体贴,重视家庭,情绪敏感,但有时过于情绪化,容易逃避。",
"狮子座"->"性格描述:自信热情,慷慨大方,领导力强,但有时过于自我,虚荣心较重。",
"处女座"->"性格描述:细心严谨,追求完美,责任感强,但有时过于挑剔,容易焦虑。",
"天秤座"->"性格描述:优雅公正,善于沟通,追求和谐,但有时犹豫不决,缺乏主见。",
"天蝎座"->"性格描述:直觉敏锐,意志坚定,占有欲强,但有时过于多疑,报复心重。",
"射手座"->"性格描述:乐观开朗,热爱自由,心胸开阔,但有时过于浮躁,缺乏责任感。",
"摩羯座"->"性格描述:沉稳踏实,有耐心,事业心强,但有时过于压抑,不懂变通。",
"水瓶座"->"性格描述:创新独立,思想开放,重视友谊,但有时过于叛逆,疏离感重。",
"双鱼座"->"性格描述:温柔善良,富有想象力,共情力强,但有时过于软弱,逃避现实。",
"白羊座"->"性格描述:热情勇敢,行动力强,乐观开朗,但有时过于冲动,缺乏耐心。"
)
map.getOrElse(zodiac, "暂无描述")
}
def main(args: Array[String]): Unit = {
val idCard="419005200310100023"
val gender=getGender(idCard)
val birthday="10-10"
val age=getAge(idCard)
val province=getProvince(idCard)
val zodiac=getZodiac(idCard)
val info=getZodiacDesc(zodiac)
println(s"----------------------")
println(s"${province}")
println(s"${gender}")
println(s"${age}")
println(s"${birthday}")
println(s"${zodiac}")
println(s"${info}")
println(s"----------------------")
}
}