字符串

19 阅读2分钟

定义字符串:

1.双引号

2.三引号

string 类型,字符串

常用的方法:

1.长度 length属性

2.下标 从0开始,表示第一个字符

3.截取 在一个长的字符串中,取出一部分

class Scala1 {

  object IDCardInfo {
    // 提取生日(格式:MM-dd)
    def getBirthday(idCard: String): String = {
      val month = idCard.substring(10, 12)
      val day = idCard.substring(12, 14)
      s"$month-$day"
    }

    // 提取性别(第17位:奇数→男,偶数→女)
    def getGender(idCard: String): String = {
      val genderCode = idCard.charAt(16).asDigit
      if (genderCode % 2 == 1) "男" else "女"
    }

    // 计算年龄(基于当前年份2025)
    def getAge(idCard: String): Int = {
      val birthYear = idCard.substring(6, 10).toInt
      2025 - birthYear
    }

    // 提取省份(简化版:仅覆盖部分省份代码)
    def getProvince(idCard: String): String = {
      val provinceCode = idCard.substring(0, 2)
      provinceCode match {
        case "11" => "北京市"
        case "12" => "天津市"
        case "13" => "河北省"
        case "14" => "山西省"
        case "31" => "上海市"
        case "32" => "江苏省"
        case "44" => "广东省"
        case _ => "未知省份"
      }
    }

    // 计算星座
    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 <= 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 = {
      // 使用合法格式的测试身份证号(示例:110101200001011234)
      val idCard = "110101200001011234"

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

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