一、导入
在编程过程中,我们经常需要处理文本信息,比如用户的输入、文件中的内容等,这些文本信息在Scala中主要是通过String类型来表示和处理的。今天我们就来学习Scala中的String处理,并以身份证信息解析为例进行实战演练。
二、String的基本概念和定义
String在Scala中是不可变的字符序列,这意味着一旦创建,其内容就不能被修改。
String的定义格式:
- 双引号:
val str = "xxxx" - 三引号:支持多行文本
package string
/*
* 字符串
* 格式1:双引号
* 格式2:三引号。支持换行
* */
object string01 {
def main(args: Array[String]): Unit = {
val str1 = " 静夜思 李白 4290015655440023x"
val str2 =
""" 静夜思
李白
"""
println(str1)
println(str2)
}
}
代码结果
代码分析
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 这三个字符取出来?
}
}
代码结果
代码分析
- 字符串索引从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)
}
}
代码结果
代码分析
- 展示了字符串到整数的类型转换:
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方法