案例,拆分身份证号的秘密

12 阅读1分钟

案例,拆分身份证号的秘密

    1. 倒数第二个数:奇数,男;偶数:女;
package stringid

object stringid03 {
  // 倒数第二个数:奇数,男;偶数:女;
  def getGender(idCard:String):String = {
    val g = idCard.substring(16,17).toInt
    if(g % 2 == 1){
      "男"
    } else {
      "女"
    }
  }

  def main(args: Array[String]): Unit = {
    val idCard = "420381200509213930"

    val gender = getGender(idCard)
    val birthday = "9-21"
    val age = 20
    val province = "湖北"
    val zodiac = "处女座" // 星座

    println(s"----------------------------------------")
    println(s" 籍贯: ${province}")
    println(s" 性别: ${gender}")
    println(s" 年龄: ${age}")
    println(s" 生日: ${birthday}")
    println(s" 星座: ${zodiac}")
    println(s"----------------------------------------")
  }
}

image.png

package stringid

import java.time.LocalDate

/*
 * 案例,拆分身份证号的秘密
 * 1. 倒数第二个数:奇数,男;偶数:女;
 *
 */
object stringid03 {
  // 倒数第二个数:奇数,男;偶数:女;
  def getAge(idCard: String): Int = {
    val year = idCard.substring(16, 17)
    LocalDate.now().getYear - year.toInt
  }
  def getGender(idCard: String): String = {
    val g = idCard.substring(16, 17).toInt
    if (g % 2 == 1) {
      "男"
    } else {
      "女"
    }
  }

  def getProvince(idCard: String): String = {
    val code = idCard.substring(0, 2)
    val map = Map("11" -> "北京", "12" -> "天津", "13" -> "河北", "14" -> "山西", "15" -> "内蒙古")
    map.getOrElse(code, "未知")
  }

  def getBirthday(idCard: String): String = {
    val month = idCard.substring(10, 12)
    val day = idCard.substring(12, 14)
    month + "-" + day
  }

  def getZodiac(idCard: String): String = {
    val month = idCard.substring(10, 12).toInt
    val day = idCard.substring(12, 14).toInt

    if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) "水瓶座"
    else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) "双鱼座"
    else if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) "白羊座"
    else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) "金牛座"
    else if ((month == 5 && day >= 21) || (month == 6 && day <= 20)) "双子座"
    else if ((month == 6 && day >= 21) || (month == 7 && day <= 22)) "巨蟹座"
    else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) "狮子座"
    else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) "处女座"
    else if ((month == 9 && day >= 23) || (month == 10 && day <= 22)) "天秤座"
    else if ((month == 10 && day >= 23) || (month == 11 && day <= 21)) "天蝎座"
    else if ((month == 11 && day >= 22) || (month == 12 && day <= 21)) "射手座"
    else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) "摩羯座"
    else "未知"
  }

  def main(args: Array[String]): Unit = {
    val idCard = "429005201505300083"

    val gender = getGender(idCard)
    val birthday = getBirthday(idCard)
    val age = getAge(idCard)
    val province = getProvince(idCard)
    val zodiac = getZodiac(idCard) // 星座

    println(s"----------------------------------------")
    println(s" 籍贯: ${province}")
    println(s" 性别: ${gender}")
    println(s" 年龄: ${age}")
    println(s" 生日: ${birthday}")
    println(s" 星座: ${zodiac}")
    println(s"----------------------------------------")
  }
}