String的定义
String 在 Scala 中是不可变的字符序列,这意味着一旦创建,其内容就不能被修改。
两种定义格式
1. 双引号
2. 三引号,支持换行
基本代码
/**
*
* 字符串
* 1. 理论
* 两种定义格式 (1) 双引号 (2)三引号,支持换行
* (1)获取指定下的字符串的长度
* (2)获取字符串的长度,length属性,空格也是字符
* (3)获取子串,只需要一个长字符串中的一部分
*
* 2. 应用:从身份证号中,解析出基本信息
*
*/
object string01 {
def main(args: Array[String]): Unit = {
val str1:String="hello scala"
// val str2:String="""
// 静夜思
// 李白
// 床前明月光
// """
// println(str2)
println(str1(0))
println(str1.length)
//str1.substring(起点下标,终点下标-不包含)
val str2=str1.substring(1,5) //ello
println(str2)
println(str1.substring(6,9))
}
}
关于字符串的应用
基本代码
/**
*
* 字符串
* 1. 理论
* 两种定义格式 (1) 双引号 (2)三引号,支持换行
* (1)获取指定下的字符串的长度
* (2)获取字符串的长度,length属性,空格也是字符
* (3)获取子串,只需要一个长字符串中的一部分
*
* 2. 应用:从身份证号中,解析出基本信息
* 示例:42900519840622 00 51
*
* (1) 省份:42 湖北, 43 湖南, 11 北京 .....
* (2) 市区,乡镇 9005
* (3) 出生年份 1984
* (4) 出生日期 0622
* (5) 顺序码 00
* (6) 倒数第二位 5, 奇数表示性别:男 偶数:女
* (7) 最后一位,是校验码,验证这个身份证号是不是瞎编的
*
*/
//object string02 {
// def main(args: Array[String]): Unit = {
// val idCard="429005200010100026"
//
// //输出一些基本信息
//
// /*
// * 性别:女
// * 生日:2000-10-10
// * 籍贯:湖北省
// * 年龄:25
// * 星座:xx座
// */
// }
//}
object string02 {
def main(args: Array[String]): Unit = {
val idCard = "429005200010100026"
// 1. 解析性别(第17位:奇数男,偶数女)
val genderCode = idCard.charAt(16).toString.toInt
val gender = if (genderCode % 2 == 0) "女" else "男"
// 2. 解析生日(第7-14位:yyyyMMdd)
val birthYear = idCard.substring(6, 10)
val birthMonth = idCard.substring(10, 12)
val birthDay = idCard.substring(12, 14)
val birthday = s"$birthYear-$birthMonth-$birthDay"
// 3. 解析籍贯(前2位:省级行政区划代码)
val provinceCode = idCard.substring(0, 2)
val province = provinceCode match {
case "42" => "湖北省"
case "11" => "北京市"
case "31" => "上海市"
case "44" => "广东省"
// 可扩展更多省份编码
case _ => "未知省份"
}
// 4. 计算年龄(基于当前年份)
import java.time.LocalDate
val currentYear = LocalDate.now().getYear
val age = currentYear - birthYear.toInt
// 5. 判断星座
val month = birthMonth.toInt
val day = birthDay.toInt
val constellation = getConstellation(month, day)
// 输出结果
println(s"性别:$gender")
println(s"生日:$birthday")
println(s"籍贯:$province")
println(s"年龄:$age")
println(s"星座:$constellation")
}
/**
* 根据月份和日期判断星座
* @param month 月份
* @param day 日期
* @return 星座名称
*/
def getConstellation(month: Int, day: Int): String = {
(month, day) match {
case (1, 20) | (2, _) if day <= 18 => "水瓶座"
case (2, 19) | (3, _) if day <= 20 => "双鱼座"
case (3, 21) | (4, _) if day <= 19 => "白羊座"
case (4, 20) | (5, _) if day <= 20 => "金牛座"
case (5, 21) | (6, _) if day <= 21 => "双子座"
case (6, 22) | (7, _) if day <= 22 => "巨蟹座"
case (7, 23) | (8, _) if day <= 22 => "狮子座"
case (8, 23) | (9, _) if day <= 22 => "处女座"
case (9, 23) | (10, _) if day <= 23 => "天秤座"
case (10, 24) | (11, _) if day <= 22 => "天蝎座"
case (11, 23) | (12, _) if day <= 21 => "射手座"
case _ => "摩羯座"
}
}
}