//字符串
//知识点
//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 score = 89
val id = "42022220080903332x".toUpperCase
println(s"身份证号是:${id}")
//1.生日是
//字符串截取
val birthday = id.substring(10,14)//不包括终点下标
println(s"生日是:${birthday}")
val year = id.substring(6,10)//6,7,8,9 这个下标
println(s"年份${year}")//2008
//性别:倒数第2位
//如果是奇数:boy, 偶数:girl
// val gender = id(16) //取下标为16的元素
val gender = id.charAt(16)
println(gender)
if(gender.asDigit % 2 == 0) {
println("性别是:女生")
}else {
println("性别是:男生")
}
//前两位表示省份
val province = id.substring(0,2).toInt
val m1 = Map((41,"河南"),(42,"湖北"),(43,"湖南"),(44,"广东"))
println(s"籍贯是:${m1.get(province)}")
//验证身份证号是否合法?
//每一位的权重
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
//对身份证的前17位,与对于的权重相乘数累加
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}是不合法的。")
}
val str1 = """
静夜思
李白
床前明月光
疑是地上霜
举头望明月
低头思故乡
"""
println(str1)
}
}
运行得:
标签:10,val,Scala,gender,秘密,字符串,身份证,println,id From: https://blog.csdn.net/2301_81748087/article/details/144030144