object class1 {
def main(args: Array[String]): Unit = {
val str = "hello scala"
println(str.length)
println(str(0))
println( str.substring(2,5) )
println( str.substring(7,10))
}
}
案例:拆分身份证号的秘密
- 倒数第二个数 奇数:男;偶数:女
object class2{
def getGender(idCard:String):String = {
val g = idCard.substring(16,17).toInt
if(g % 2 == 1){
"男"
}else{
"女"
}
}
def main(args: Array[String]): Unit = {
val idCard = "320324200606214419"
val gender = "女"
val birthday = "06.21"
val age = 19
val province = "湖北"
val zodiac= "双子"
println(s"---------------------")
println(s" 籍贯: ${province}")
println(s" 性别: ${gender}")
println(s" 年龄:${age}")
println(s" 生日:${birthday} ")
println(s" 星座:${zodiac}")
println(s"---------------------")
}
}
若想用身份证号码知道籍贯
object class2{
def getGender(idCard:String):String = {
val g = idCard.substring(16,17).toInt
if(g % 2 == 1){
"男"
}else{
"女"
}
}
def getProvince(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"->"澳门")
map.getOrElse(code,"未知")
}
def main(args: Array[String]): Unit = {
val idCard = "320324200606214419"
val gender = "女"
val birthday = "06.21"
val age = 19
val province = getProvince(idCard)
val zodiac= "双子"
println(s"---------------------")
println(s" 籍贯: ${province}")
println(s" 性别: ${gender}")
println(s" 年龄:${age}")
println(s" 生日:${birthday} ")
println(s" 星座:${zodiac}")
println(s"---------------------")
}
}

当然,可以以此类推,来知道生日,星座,年龄
- 我将身份证号改成320324200603034419
- 输出结果改变成“03.03”和“双鱼座”
import java.time.LocalDate
object class2{
def getGender(idCard:String):String = {
val g = idCard.substring(16,17).toInt
if(g % 2 == 1){
"男"
}else{
"女"
}
}
def getProvince(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"->"澳门")
map.getOrElse(code,"未知")
}
def getAge(idCard: String): Int = {
val year = idCard.substring(6, 10)
LocalDate.now().getYear() - year.toInt
}
def getBirthday(idCard: String): String = {
val month = idCard.substring(10,12)
val day = idCard.substring(12,14)
month + "-" + day
}
def getZodiac(idCard: String): String = {
val month = idCard.substring(10,12).toInt
val day = idCard.substring(12,14).toInt
if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) "水瓶座"
else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) "双鱼座"
else if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) "白羊座"
else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) "金牛座"
else if ((month == 5 && day >= 21) || (month == 6 && day <= 21)) "双子座"
else if ((month == 6 && day >= 22) || (month == 7 && day <= 22)) "巨蟹座"
else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) "狮子座"
else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) "处女座"
else if ((month == 9 && day >= 23) || (month == 10 && day <= 22)) "天秤座"
else if ((month == 10 && day >= 23) || (month == 11 && day <= 21)) "天蝎座"
else if ((month == 11 && day >= 22) || (month == 12 && day <= 21)) "射手座"
else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) "摩羯座"
else "未知"
}
def main(args: Array[String]): Unit = {
val idCard = "320324200603034419"
val gender = "女"
val birthday = getBirthday(idCard)
val age = getAge(idCard)
val province = getProvince(idCard)
val zodiac= getZodiac(idCard)
println(s"---------------------")
println(s" 籍贯: ${province}")
println(s" 性别: ${gender}")
println(s" 年龄:${age}")
println(s" 生日:${birthday} ")
println(s" 星座:${zodiac}")
println(s"---------------------")
}
}

import java.time.LocalDate
object class2{
def getGender(idCard:String):String = {
val g = idCard.substring(16,17).toInt
if(g % 2 == 1){
"男"
}else{
"女"
}
}
def getProvince(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"->"澳门")
map.getOrElse(code,"未知")
}
def getAge(idCard: String): Int = {
val year = idCard.substring(6, 10)
LocalDate.now().getYear() - year.toInt
}
def getBirthday(idCard: String): String = {
val month = idCard.substring(10,12)
val day = idCard.substring(12,14)
month + "-" + day
}
def getZodiac(idCard: String): String = {
val month = idCard.substring(10,12).toInt
val day = idCard.substring(12,14).toInt
if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) "水瓶座"
else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) "双鱼座"
else if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) "白羊座"
else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) "金牛座"
else if ((month == 5 && day >= 21) || (month == 6 && day <= 21)) "双子座"
else if ((month == 6 && day >= 22) || (month == 7 && day <= 22)) "巨蟹座"
else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) "狮子座"
else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) "处女座"
else if ((month == 9 && day >= 23) || (month == 10 && day <= 22)) "天秤座"
else if ((month == 10 && day >= 23) || (month == 11 && day <= 21)) "天蝎座"
else if ((month == 11 && day >= 22) || (month == 12 && day <= 21)) "射手座"
else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) "摩羯座"
else "未知"
}
def getZodiactrait(zodiac:String): String = {
val map = Map(
"水瓶座" -> "思维独特、追求自由、创新反叛、待人友善但保持独立,富有人道主义精神"
,
"双鱼座" -> "感性细腻、富有幻想、善良温柔、共情能力强,易受情绪影响但充满艺术天赋"
,
"白羊座" -> "热情冲动、勇敢自信、争强好胜、行动力强,做事果断但有时缺乏耐心"
,
"金牛座" -> "稳重务实、坚韧执着、追求安全感,热爱美食与美好事物,略显固执但可靠"
,
"双子座" -> "机智灵活、善于沟通、好奇心强、适应力佳,思维跳跃但易缺乏专注力"
,
"巨蟹座" -> "温柔顾家、敏感细腻、重感情、有保护欲,情绪波动大但极具责任感"
,
"狮子座" -> "自信霸气、慷慨热情、爱面子、有领导力,阳光开朗但偶尔有些自负"
,
"处女座" -> "细致严谨、追求完美、勤奋务实、逻辑清晰,有洁癖且挑剔但责任心极强"
,
"天秤座" -> "优雅随和、追求公平、善于社交、审美出众,犹豫不决但极具协调能力"
,
"天蝎座" -> "神秘腹黑、洞察力强、爱恨分明、意志力坚定,占有欲强但重情重义"
,
"射手座" -> "乐观开朗、热爱自由、喜欢冒险、心胸开阔,做事随性但缺乏耐心"
,
"摩羯座" -> "沉稳内敛、野心十足、脚踏实地、坚韧不拔,略显刻板但极具责任心"
,
"未知" -> "暂无对应性格特点(身份证信息异常)")
map.getOrElse(zodiac,"未知")
}
def main(args: Array[String]): Unit = {
val idCard = "320324200603034419"
val gender = "女"
val birthday = getBirthday(idCard)
val age = getAge(idCard)
val province = getProvince(idCard)
val zodiac= getZodiac(idCard)
val zodiacTrait= getZodiactrait(zodiac)
println(s"---------------------")
println(s" 籍贯: ${province}")
println(s" 性别: ${gender}")
println(s" 年龄:${age}")
println(s" 生日:${birthday} ")
println(s" 星座:${zodiac}")
println(s" 星座性格:${zodiacTrait}")
println(s"---------------------")
}
}
