String 类型:字符串

26 阅读3分钟

String 类型:字符串

定义字符串:

  1. 双引号
  2. 三引号
package string101

object string101dot {
  def main(args: Array[String]): Unit = {
    val name = "小"
    val str = s"I like scala, $name"
    val content =
      """
        |举目
        |东望明月,
        |疑是地上霜。
        |举头望明月,
        |低头思故乡。
      """.stripMargin
    println(content)
  }
}

常用的方法:

  • 长度: length属性
  • 下标: 从0开始,表示第一个字符
  • 截取: 在一个长的字符串中,取出一部分。
  • substring(起点下标, 终点下标-不包含)
package stringid

object stringid02 {
  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) )
  }
}

案例: 拆分身份证号码的秘密

  • 倒数第二个数: 奇数: 男; 偶数:女
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 = "429905200410100683"
    val gender = getGender(idCard)
    val birthday = "10-10"
    val age = 21
    val province = "湖北"
    val zodiac = "天秤座" // 星座
    println(s"籍贯: $province")
    println(s"性别: $gender")
    println(s"年龄: $age")
    println(s"生日: $birthday")
    println(s"星座: $zodiac")
  }
}
package stringid

import java.time.LocalDate

/*
* 案例: 拆分身份证的秘密
* 1. 截取第二个数: 奇数: 男; 偶数: 女;
*/
object stringid05 {
  // 截取第二个数: 奇数: 男; 偶数: 女;
  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 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 < 19)) "水瓶座"
    else if ((month == 2 && day >= 19) || (month == 3 && day < 21)) "双鱼座"
    else if ((month == 3 && day >= 21) || (month == 4 && day < 20)) "白羊座"
    else if ((month == 4 && day >= 20) || (month == 5 && day < 21)) "金牛座"
    else if ((month == 5 && day >= 21) || (month == 6 && day < 22)) "双子座"
    else if ((month == 6 && day >= 22) || (month == 7 && day < 23)) "巨蟹座"
    else if ((month == 7 && day >= 23) || (month == 8 && day < 23)) "狮子座"
    else if ((month == 8 && day >= 23) || (month == 9 && day < 23)) "处女座"
    else if ((month == 9 && day >= 23) || (month == 10 && day < 24)) "天秤座"
    else if ((month == 10 && day >= 24) || (month == 11 && day < 23)) "天蝎座"
    else if ((month == 11 && day >= 23) || (month == 12 && day < 22)) "射手座"
    else if ((month == 12 && day >= 22) || (month == 1 && day < 20)) "摩羯座"
    else "未知"
  }
  def getInfo(zodiac: String): String = {
    val map = Map(
      "白羊座"->"热情奔放,充满活力,喜欢追求新鲜刺激,但有时冲动易怒,固执己见。",
      "金牛座"->"稳重务实,勤奋踏实,注重物质享受,但有时固执己见,对钱财看得较重。",
      "双子座"->"思维敏捷,沟通能力强,适应力强,但有时过于情绪化,不够专注。",
      "巨蟹座"->"敏感温柔,家庭观念浓厚,保护意识强,但有时多愁善感,依赖性强。",
      "狮子座"->"自信热情,有领导能力,讲义气,但有时耐不住寂寞,显得自大。",
      "处女座"->"细致完美,思路清晰,待人真诚,但有时过于挑剔,吹毛求疵。",
      "天秤座"->"和谐爱美,公正理智,社交能力强,但有时优柔寡断,缺乏主见。",
      "天蝎座"->"神秘坚定,敏锐洞察力强,但有时孤傲复杂,多疑狂妄。",
      "射手座"->"开朗乐观,崇尚自由冒险,但有时过于保守,缺乏安全感。",
      "摩羯座"->"稳重踏实,有耐心和野心,但有时心大,缺乏浪漫。",
      "水瓶座"->"创新独立,理想主义,友善坦诚,但有时反叛冷漠。",
      "双鱼座"->"浪漫温柔,富有同情心,爱幻想,但有时意志薄弱,粗心大意。")
    map.getOrElse(zodiac, "未知")
  }

  def main(args: Array[String]): Unit = {
    val idCard = "429005200401010083"
    val gender = getGender(idCard)
    val birthday =getBirthday(idCard)
    val age = getAge(idCard)
    val province = getProvince(idCard)
    val zodiac = getZodiac(idCard) // 星座
    val info = getInfo(zodiac)
    println(s"----------------------------------")
    println(s" 籍贯: ${province}")
    println(s" 性别: ${gender}")
    println(s" 年龄: ${age}")
    println(s" 生日: ${birthday}")
    println(s" 星座: ${zodiac}")
    println(s" 性格介绍: ${info}")
    println(s"-----------------------------------")
  }
}