scala中的字符串

46 阅读2分钟

String的定义

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

2.三引号。支持换行

object string01 {
  def main(args: Array[String]): Unit = {
    val name="小花"

    val str = s"I like scala,${name}"

    val content="""
          静夜思
           李白
        床前明月光,
        疑是地上霜。
        举头望明月,
        低头思故乡。
        """

    println(content)
  }
}

String的常用方法

/*
*String 类型,字符串
*
*常用的方法:
* 1.长度。length属性
* 2.截取。在一个长的字符串中,取出一部分。
*
 */
object string02 {
  def main(args: Array[String]): Unit = {
    val str = "hello scala"
    println(str.length)
    println(str(0))

    // 2.取出“llo”这三个字符串
    println(str.substring(2,5))

    // 取出“cal”这三个字符串
    println(str.substring(7,10))

  }
}

身份证号的基本知识

举例某个同学的身份证信息,讲解

前2位是省市的信息;

后四位是具体的乡镇信息;

接下来8位是生日;

倒数第2位表示性别;

最后一位是校验码;

案例实现:输入身份证号输出基本信息

/*
*案例,拆分身份证号的秘密
* 倒数第二个数:奇数,男;偶数,女;
*
 */
object string03 {
  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 = "42900521010100053"
    val gender = getGender(idCard)
    val birthday="10-10"
    val age = 21
    val province = "湖北"
    val zodiac="天秤座" //星座
    println(s"----------------------------")
    println(s"籍贯:${province}")
    println(s"性别:${gender}")
    println(s"年龄:${age}")
    println(s"生日:${birthday}")
    println(s"星座:${zodiac}")
  }
}
/*
*案例,拆分身份证号的秘密
* 1.倒数第二个数:奇数,男;偶数,女;
* 2.前两个字符:表示省份。42,湖北;43,湖南;11,北京......
 */
object string03 {
  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)
    //今年的年份 - year
    LocalDate.now().getYear-year.toInt
  }
  def getProvince(idCard: String):String= {
    val code = idCard.substring(0, 2) //11
    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 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<=21))"双子座"
    else if((month==6&& day>=22)||(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<=23))"天秤座"
    else if((month==10&& day>=24)||(month==11&&day<=22))"天蝎座"
    else if((month==11&& day>=23)||(month==12&&day<=21))"射手座"
    else if((month==12&& day>=22)||(month==1&&day<=19))"摩羯座"
    else "未知"
  }
  def main(args: Array[String]): Unit = {
    val idCard = "1490052015101000083"
    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"----------------------------")
  }
}