string身份证代码示例

25 阅读3分钟
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"----------------------")
  }
}