一、String的定义
String 在 Scala 中是不可变的字符序列,这意味着一旦创建,其内容就不能被修改。
定义格式:
-
双引号: val str = "xxxx"
-
三引号。支持换行。
/*
字符串
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)
二、String的常用方法
(1)、索引访问
可以使用索引来访问字符串中的字符,索引从 0 开始。
(2)、长度索取
使用length方法获取字符串长度。
(3)、字串提取
使用substring方法可以提取字符串的子串。
格式: subString(起点,终点-不包括)
(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)) // sca
}
(4)、字符串转换成数字
示例:如何从身份证中分析出性别
字符转成数字
charAt() :得到的是字符,如果对字符使用toInt,就会得到对于的ASCII码。
asDigit :正确的使用方式是用asDiget。
import java.time.LocalDate
/**
* 字符串
*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 getGender(idCard:String):String={
val gender=idCard.substring(16,17).toInt
if(gender%2==0)
"女"
else
"男"
}
def getBirthday(idCard:String)={
val year=idCard.substring(6,10)
val month=idCard.substring(10,12)
val day=idCard.substring(12,14)
year+"-"+month+"-"+day
}
def getAge(idCard:String):Int= {
val year = idCard.substring(6, 10).toInt
val currentYear=LocalDate.now().getYear
currentYear-year
}
def main(args: Array[String]): Unit = {
val idCard="42900520001010026"
val gender=getGender(idCard)
val birthday=getBirthday(idCard)
val age=getAge(idCard)
println(
s"""
性别:${gender}
生日:${birthday}
籍贯:湖北省
年龄:${age}
星座:xx座
""")
}