scala中的身份证 ---String字符串

17 阅读1分钟

在编程过程中,我们经常需要处理文本信息,比如用户的输入、文件中的内容等,这些文本信息在 Scala 中主要是通过 String 类型来表示和处理的。今天我们就来学习 Scala 中的 String。

String 的定义

String 在 Scala 中是不可变的字符序列,这意味着一旦创建,其内容就不能被修改。

定义格式:

1.双引号: val str = "xxxx"

2.三引号。支持换行。(保留其打印时的原有格式)

package String
//String类型 *字符串
//定义字符串:
//1:双引号
//2:三引号(支持换行)
object String01 {
  def main(args: Array[String]): Unit = {
    val name = "蔡徐坤"
    val str = s"${name}I like scala"
    println(str)
    val content =
      """
      静夜思
       床前明月光
        疑是地上霜
         举头望明月
          低头思故乡
          """.stripMargin
  println(content)
  }
}

字符串常用方法:

1:获取长度(空格也算在长度)

val str1 = "hello world"

println(str1.length)

2:截取:在一个长的字符串中,取出一部分

取出llo:

str1.substring(起点下标,结束下标且不包含)

下标:从0开始,表示一个字符

println(str1.substring(2,5))

练习:通过身份证号推断出这个人的信息

package String
import java.time.LocalDate

object String03 {
  def main(args: Array[String]): Unit = {

    val currentYear = LocalDate.now().getYear
    //获取当前年份
    println(s"当前年份: $currentYear")
    def Gender(idcard:String):String = {
      val gen = idcard.substring(16,17).toInt
      if(gen % 2 == 0){
        "性别:女"
      }else {
        "性别:男"
      }
    }
    def brith(idcard:String):String = {
      val bri = idcard.substring(10,14).toInt
      s"生日:${bri}"
    }
    def age(idcard:String):String = {
      val year = idcard.substring(6,10)
      val age1: Int = currentYear - year.toInt
      s"年龄:${age1}"
    }
    def province(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" -> "澳门", "91" -> "外国"
      )
      map.getOrElse(code,"未知")
    }
    val idcard = "420123200604280045"
    println(brith(idcard))
    println(Gender(idcard))
    println(age(idcard))
    println(province(idcard))
  }

}

输出结果:

image.png