首页 > 其他分享 >Scala 身份证的秘密

Scala 身份证的秘密

时间:2024-11-25 16:59:32浏览次数:8  
标签:10 val Scala gender 秘密 字符串 身份证 println id

//字符串
//知识点
//1.toInt 把字符串转成整数
//2.toUpperCase 变大写
//3.toLowerCase 变小写
//4.substring (起点,终点-不包括) 字符串截取
//5.charAt (下标) 得到对应位置的字符 (不是字符串)
//6.asDigit 把字符串转成数字
//7."""三引号字符串,支持换行
//8.contains 是否包含子串
//9.length属性,用来获取有几个字符
object test {
  def main(args: Array[String]): Unit = {
//    val score = 89
    val id = "42022220080903332x".toUpperCase
    println(s"身份证号是:${id}")
    //1.生日是
    //字符串截取
    val birthday = id.substring(10,14)//不包括终点下标
    println(s"生日是:${birthday}")

    val year = id.substring(6,10)//6,7,8,9 这个下标
    println(s"年份${year}")//2008

    //性别:倒数第2位
    //如果是奇数:boy, 偶数:girl
//    val gender = id(16) //取下标为16的元素
    val gender = id.charAt(16)
    println(gender)
    if(gender.asDigit % 2 == 0) {
      println("性别是:女生")
    }else {
      println("性别是:男生")
    }

    //前两位表示省份
    val province = id.substring(0,2).toInt
    val m1 = Map((41,"河南"),(42,"湖北"),(43,"湖南"),(44,"广东"))
      println(s"籍贯是:${m1.get(province)}")

    //验证身份证号是否合法?
    //每一位的权重
    val weights = Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)
    val checkCodes = "10X98765432"
    var sum = 0
    //对身份证的前17位,与对于的权重相乘数累加
    for(i<-0 to 16){
      sum += id(i).asDigit * weights(i)
    }
    //把累加的结果模11,找到对于的校验码
    if(id.charAt(17) == checkCodes.charAt(sum%11)) {
      println(s"身份证号是${id}是合法的。")
    }else{
      println(s"身份证号是${id}是不合法的。")
    }

    val str1 = """
          静夜思
           李白
         床前明月光
         疑是地上霜
         举头望明月
         低头思故乡
        """
    println(str1)
  }
}

运行得:

标签:10,val,Scala,gender,秘密,字符串,身份证,println,id
From: https://blog.csdn.net/2301_81748087/article/details/144030144

相关文章

  • Scala 的Array 和 ArrayBuffer 集合
     下面主要对Array和ArrayBuffer这两种相对应的集合进行介绍,通过可变数组与多维数组的理论知识结合相关案例深入分析Array和ArrayBuffer的应用。1.Scala的Array Scala的Array表示长度不可变的数组,Array与Java中的大部分功能相同。Scala中的Array[T]对应Java中的TU],例......
  • 指针的奥秘:深入探索内存的秘密
    前言在计算机编程的广阔天地中,指针作为一种独特的数据类型,它不仅是C语言的核心,也是理解计算机内存管理的基石。指针的概念虽然强大,但对于初学者来说,它常常是学习过程中的一个难点。本文旨在揭开指针的神秘面纱,带你一探究竟,从基础概念到高级应用,全面解析指针的奥秘。 指针:......
  • 11.25Scala
    案例:统计成绩1.按行读入文件importscala.io.Source//案例:统计成绩objectdd1{defmain(args:Array[String]):Unit={//1.按行读入文valsource=Source.fromFile("score.txt")valit=source.getLines()//迭代器it.next()//跳过第一行......
  • 11.21Scala
    importjava.io.PrintWriterimportscala.io.Sourceobjectddd1{defmain(args:Array[String]):Unit={//读入文件内容valcontent=Source.fromFile("dd.txt").mkStringprintln(content)//2.把字符串拆分为一个一个的单词,保存到数组//正则......
  • python - 验证身份证合法性
    可以使用id_validator库1.验证身份证号合法性验证身份证号是否合法,合法返回True,不合法返回Falsefromid_validatorimportvalidatorvalidator.is_valid('440308199901101512')#大陆居民身份证18位validator.is_valid('610104620927690')#大陆居民身份证15位......
  • 使用Scala语言实现基本图像识别
    Scala是一种静态类型、函数式和面向对象的编程语言,它运行在JVM上,并且与Java高度兼容。Scala语言在数据处理和并发编程方面非常强大,下面是使用Scala语言实现Sobel边缘检测的代码示例。代码实现为了实现图像处理,我们将使用javax.imageio.ImageIO类来读取和保存图像,同时使用java.aw......
  • 探索 Linux 的 `/dev/shm`:高效共享内存的秘密
    探索Linux的/dev/shm:高效共享内存的秘密在Linux的日常使用中,你可能听说过/dev/shm这个目录,但它的用途和强大之处可能还不太清楚。其实,/dev/shm是一个内存文件系统(tmpfs),为我们提供了一种快速、高效的方式进行数据共享,尤其是在进程间通信的场景下。本文将通过简单的......
  • 甘特图,解密项目管理背后的秘密
    在项目管理中,甘特图和市场管理是两个非常重要的工具和方法,它们帮助团队和管理层协调工作进度、跟踪项目状态、分配资源,并确保项目按时交付和达到预期目标。接下来,我们将深入分析这两者在项目管理中的作用,以及如何通过它们解锁项目管理的背后秘密。  一、甘特图:项目进度的可视......
  • Scala 的trait
     在Scala中,trait是一种特殊概念。trait可以作为接口,同时也可以定义抽象方法。类使用extends继承trait,在Scala中,无论继承类还是继承trait都用extends关键字。在Scala中,类继承trait后必须实现其中的抽象方法,实现时不需要使用override关键字,同时Scala支持多重继承trait,使用with......
  • 文字识别接口应用场景解析-身份证识别、发票识别API、车牌识别
    在快节奏的工作与生活环境中,如何提高企业工作效率、提升用户体验成为了人们追求的共同目标。针对市场发展需求,一种将任意场景图片中的文字转换为可编辑文本的文字识别技术出现在大众视野。翔云人工智能开放平台通过不断的技术创新,基于深度学习算法与自主ocr核心技术,提供了......