Scala字符串处理实战:身份证信息解析

50 阅读3分钟

一、导入

在编程过程中,我们经常需要处理文本信息,比如用户的输入、文件中的内容等,这些文本信息在Scala中主要是通过String类型来表示和处理的。今天我们就来学习Scala中的String处理,并以身份证信息解析为例进行实战演练。

二、String的基本概念和定义

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

String的定义格式:

  1. 双引号val str = "xxxx"
  2. 三引号:支持多行文本
package string

/*
* 字符串
*  格式1:双引号
*  格式2:三引号。支持换行
* */

object string01 {
  def main(args: Array[String]): Unit = {
    val str1 = " 静夜思 李白 4290015655440023x"
    val str2 =
      """ 静夜思
        李白
        
        
        """
    println(str1)
    println(str2)
  }
}

代码结果

11.png

代码分析

  • string01.scala展示了Scala中字符串的两种定义方式
  • 双引号用于定义单行字符串,包含空格和特殊字符
  • 三引号支持多行字符串,保留原始格式(包括换行和缩进)
  • 示例中展示了包含身份证号的字符串定义方式

三、String的常用操作方法

1. 索引访问和子串提取

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")
    //把ele 这四个字符取出来
    
    val str2 =str1.substring(1,5)
    println(str2)
    // 把cal 这三个字符取出来?
  }
}

代码结果

22.png

代码分析

  • 字符串索引从0开始,使用str(index)访问单个字符
  • substring(start, end)方法提取子串,包含起始索引,不包含结束索引
  • 示例中提取了"ello"子串(索引1-5)
  • 注意:代码中存在输出语句错误,应为println("字符串的长度是:" + str1.length)

2. 类型转换和更多操作

package string

/**
 * 字符串:
 * 常见操作
 * 1.获取单个字符
 * 2.字符串的长度,空格也是有效的字符,它也会占据字符
 * 3.字符串的截取:从当前字符串中,截取一段出来 subString(起点下标,终点下标-不包含)
 * 4. 转成数字
 * */

object string03 {
  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 strCal = str1.substring(8, 11)
    println("截取的cal:" + strCal)
    
    val str3 = "我的手机号的第三位是3"
    //把 3 截取出来
    val str4 = str3.substring(10,11)//str4是一个字符串"3"
    println(str4 + 10)
    val n = str4.toInt
    println(n + 1)
  }
}

代码结果

33.png

代码分析

  • 展示了字符串到整数的类型转换:toInt方法
  • 字符串连接使用+运算符
  • 提取"cal"子串时使用索引8-11(包含8,不包含11)
  • 从"我的手机号的第三位是3"中提取数字"3"并转换为整数进行计算
  • 注意:str4 + 10执行字符串连接,而n + 1执行数值加法

四、String的其他常用方法

1. 字符串连接

可以使用+concat方法将两个字符串连接起来:

val str1 = "Hello"
val str2 = "Scala"
println(str1 + "." + str2)  // Hello.Scala
println(str1.concat(".").concat(str2))  // Hello.Scala

2. 大小写转换

  • toUpperCase:转大写
  • toLowerCase:转小写

3. 其他常用方法

  • 检查是否包含某个子串:contains方法
  • 拆分字符串为数组:split方法
  • 获取字符串长度:length方法
  • 去除首尾空格:trim方法