字符串知识点
1.toInt:把字符串转成整数
2.toUpperCase:变大写
3.toLowerCase::变小写
4.substring(起点下标,终点下标(不包括))字符串截取
5.charAt(下标)得到对应位置的字符(不是字符串)
6.asDigit:把字符转成数字
7.“”“三引号字符串,支持换行
8.contains: 是否包含子串
9.length属性:用来获取有几个字符
object Test {
def main(args: Array[String]): Unit = {
val id = "42032220080903332X"
println(s"身份证号是${id}")
//1.生日是?
//字符串截取
val birthday = id.substring(10,14) // 不包括终点下标 (起点下标,终点下标)
println(s"生日是${birthday}")
val year = id.substring(6,10)
println(s"出生年份是${year}")
//判断是女性还是男性
//偶是是女性,奇数是男性
val gender = id.substring(16,17)
println(gender)
if (gender.toInt % 2 == 0){
println("是女性")
}else{
println("是男性")
}
// 省份代码映射
val provinceCodes = Map(
"41" -> "河南",
"42" -> "湖北",
"43" -> "湖南",
"44" -> "广东",
"45" -> "广西",
"46" -> "海南"
)
// 获取身份证号码的前两位作为省份代码
val provinceCode = id.substring(0, 2)
// 根据省份代码获取省份名称
val province = provinceCodes.get(provinceCode).getOrElse("未知省份")
println(s"省份是:$province")
// 获取出生年份
val yearInt = id.substring(6, 10).toInt
// 生肖数组
val zodiacs = Array("鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊","猴", "鸡", "狗", "猪")
// 计算生肖
// 2008年是鼠年,所以用 (yearInt - 2008) % 12 来计算相对于鼠年的偏移
val zodiacIndex = (yearInt - 4) % 12 // 2008年是鼠年,所以用4(鼠年的索引)
val zodiac = zodiacs(zodiacIndex)
println(s"生肖是:$zodiac")
//判断身份证号是否合法
val weights = Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)
val checkCodes = "10X98765432"
var sum = 0
for(i <- 0 to 16){
sum += id(i).asDigit * weights(i)
}
//把累加的结果模11,找到对于的校验码
if(id.charAt(17) == checkCodes.charAt(sum % 11)){
println(s"身份证号${id}是合法的")
} else {
println(s"身份证号${id}是不合法的")
}
}
}