在编程过程中,我们经常需要处理文本信息,比如用户的输入、文件中的内容等,这些文本信息在 Scala 中主要是通过 String 类型来表示和处理的。今天我们就来学习 Scala 中的 String。
String 的定义
String 在 Scala 中是不可变的字符序列,这意味着一旦创建,其内容就不能被修改。
定义格式:
1.双引号: val str = "xxxx"
2.三引号。支持换行。(保留其打印时的原有格式)
package String
//String类型 *字符串
//定义字符串:
//1:双引号
//2:三引号(支持换行)
object String01 {
def main(args: Array[String]): Unit = {
val name = "蔡徐坤"
val str = s"${name}I like scala"
println(str)
val content =
"""
静夜思
床前明月光
疑是地上霜
举头望明月
低头思故乡
""".stripMargin
println(content)
}
}
字符串常用方法:
1:获取长度(空格也算在长度)
val str1 = "hello world"
println(str1.length)
2:截取:在一个长的字符串中,取出一部分
取出llo:
str1.substring(起点下标,结束下标且不包含)
下标:从0开始,表示一个字符
println(str1.substring(2,5))
练习:通过身份证号推断出这个人的信息
package String
import java.time.LocalDate
object String03 {
def main(args: Array[String]): Unit = {
val currentYear = LocalDate.now().getYear
//获取当前年份
println(s"当前年份: $currentYear")
def Gender(idcard:String):String = {
val gen = idcard.substring(16,17).toInt
if(gen % 2 == 0){
"性别:女"
}else {
"性别:男"
}
}
def brith(idcard:String):String = {
val bri = idcard.substring(10,14).toInt
s"生日:${bri}"
}
def age(idcard:String):String = {
val year = idcard.substring(6,10)
val age1: Int = currentYear - year.toInt
s"年龄:${age1}"
}
def province(idcard:String):String = {
val code = idcard.substring(0,2)
val map = Map(
"11" -> "北京", "12" -> "天津", "13" -> "河北", "14" -> "山西", "15" -> "内蒙古",
"21" -> "辽宁", "22" -> "吉林", "23" -> "黑龙江", "31" -> "上海", "32" -> "江苏",
"33" -> "浙江", "34" -> "安徽", "35" -> "福建", "36" -> "江西", "37" -> "山东",
"41" -> "河南", "42" -> "湖北", "43" -> "湖南", "44" -> "广东", "45" -> "广西",
"46" -> "海南", "50" -> "重庆", "51" -> "四川", "52" -> "贵州", "53" -> "云南",
"54" -> "西藏", "61" -> "陕西", "62" -> "甘肃", "63" -> "青海", "64" -> "宁夏",
"65" -> "新疆", "71" -> "台湾", "81" -> "香港", "82" -> "澳门", "91" -> "外国"
)
map.getOrElse(code,"未知")
}
val idcard = "420123200604280045"
println(brith(idcard))
println(Gender(idcard))
println(age(idcard))
println(province(idcard))
}
}
输出结果: