scala中的字符串-身份证中的秘密

84 阅读2分钟

(一)String 的定义

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

定义格式:

package string

object string01 {
  /*
  * 字符串:
  * 格式1:双引号
  * 格式2:三引号,支持换行。
  *
  * */
  def main(args: Array[String]): Unit = {
    val str1 = "静夜思 李白 4582155151155313211"

    val str2 =
      """静夜思
        | 李白
        |  5151546154451541545x""".stripMargin

    println(str1)
    println(str2)
  }
}

Snipaste_2025-12-09_08-42-13.png

(二)String 的常用方法

1.索引访问*

可以使用索引来访问字符串中的字符,索引从 0 开始。例如:

val str = "Scala"

println(str(0)) // 输出:S

2. 长度获取*

使用length方法获取字符串长度。例如:

val str = "Scala is great"

println(str.length) // 输出:14

3. 子串提取

[案例:从身份证号中分析得到有效信息]。使用substring方法可以提取字符串的子串。

格式: subString(起点,终点-不包括)

例如:

val str = "429005200112130042"

println(str.substring(7)) // 获取身份证号中的生日

println(str.substring(0, 5)) // 根据身份证号中的倒数第二位,来判断学生的性别。

4.字符串转成数字*

背景知识:倒数第二位(第17位,下标为16)如果是偶数表示女,如果是奇数表示为男。

【引导分析思路】:从身份证号中取出第17位,判断奇偶,并输出对应的结果。

val str = "429005200112130042"

val gender = str.substring(16,17) // 根据身份证号中的倒数第二位,来判断性别  
if(gender.toInt % 2==1) { println("性别为男")}

字符转成数字

charAt() 得到的是字符,如果对字符使用toInt,就会得到对于的ASCII码。

asDigit。正确的使用方式是用asDiget。


package string
/*
* 字符串:
* 常见操作
* 1.获取单个字符串
* 2.字符串的长度,空格也是有效的字符
* 3.字符串的截取,从当前字符串中截取一段出来 subString(起点下标,终点下标-不包含)
* */
object string02 {
  def main(args: Array[String]): Unit = {
    val str1 = "hello scala"
    //字符串下标从0开始
    println(str1(0))
    println("字符串的长度是:" + str1.length)

    //把ello这是个字符取出来
    val str2 = str1.substring(1,5)
    println(str2)
    //把cal这三个字符取出来
    val str3 = str1.substring(7,10)
    println(str3)

    // 把3截取出来
    val str4 = "我的手机号第三位是31"
    val str5 = str4.substring(10,11)
    println(str4 + 10)//310

    val n = str5.toInt
    println(n + 1)
  }

}