java小白训练营day05-API:API+字符串工具类+身份证解析

Posted 长安紫薯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java小白训练营day05-API:API+字符串工具类+身份证解析相关的知识,希望对你有一定的参考价值。

API手册

下载jdk1.5手册

注意:chm文件从网络下载后,菜单能展现点击后内容不能展现,按下面图修改下即可

api

java提供api非常方法,数万类,每个类又有很多方法。这些开发者就不需要自己去写了,开发的效率就提高了。
java是所有的语言中最丰富的一个。
提供两个:java* 基础核心类,javax* 扩展类
91年诞生,太早,很多内容是不够成熟的,经过这么多年发展,有些内容不符合时代,过气。

java是否老了?

java确实老了,很多api过气,作废,被新的内容所替代。
Spring 春天,它就是结束了java的冬天,迎来开发者春天。SpringBoot、Spring框架、SpringMVC框架、SpringCloud微服务

怎么使用api手册?

大概知道要查询什么内容
1)目录,明确知道哪个类的哪个方法
2)搜索,搜索关键字Random,查询说明

早期开发,网上文章非常少,一般就是去官网下载api手册,来查询。看书。CSDN
搜索引擎非常成熟,网上分享的文章和案例也非常多,百度

字符串工具类

常见的字符串的api

package test;

import org.junit.Test;

//常用字符串api的方法
public class TestString {
	@Test //转义字符
	public void cover() {
		System.out.println("==\\n==\\n==");
	}
	
	@Test	//拼串
	public void concat() {
		System.out.println("abc" + 123);
		System.out.println("abc".concat("123"));
		
		String s = "abc" + 12345678;
		System.out.println("字符串长度:" + s.length());
	}
	
	@Test	//去掉字符串表两边的空格
	public void trim() {
		//前面有空格,中间有空格,后面有空格
		String s = "   789 夏季 就快过完了     ";
		System.out.println( s.trim() );
	}
	
	@Test	//获取字符串中某个位置的字符
	public void charAt() {
		//字符串底层就是字符数组,获取某个字母就可以通过数组的下标来访问
		String s = "ABCDEFGHIMN";
		//获取B
		char c1 = s.charAt(1);
		System.out.println( c1 );
		
		System.out.println("第一个字符:" + s.charAt(0) );
		System.out.println("最后一个字符:" 
				+ s.charAt(s.length()-1) );  //太长可以换行
	}
	
@Test	//截取子串,字符串的一部分
public void substring() {
	String mail = "chen@tedu.cn";
	//需求:用户名tony和域名tedu.cn?
	
	//按位置来截取
	String name = mail.substring(0, 4);
	System.out.println("用户名:"+ name);
	
	//技巧:大概预估,速度快,错了,调整!
	String domainName = mail.substring(5, 12);
	System.out.println("域名:" + domainName);
	
	//如果截取字符串是到最后,第二个参数就不需要,默认就是到最后
	domainName = mail.substring(5);
	System.out.println("域名:" + domainName);
}
	
	@Test //获取某个字符串它出现的位置索引值
	public void indexOf() {
		//找规律?邮箱规律 xxx@domain
		//只要找到@的位置,就可以动态获取了
		String mail = "tonywang@baidu.com";
		
		int pos = mail.indexOf("@");
		System.out.println("特殊的@它的位置:" + pos);
		
		System.out.println("用户名:" + mail.substring(0, pos));
		System.out.println("域名:" + mail.substring(pos+1) );
	}
	
	@Test	//获取某个字符串出现位置
	public void lastIndexOf() {
		//String name = "歌手-刘若英-后天.mp3"; //歌曲名称
		String name = "歌手.刘若英.后天.mp3"; //歌曲名称
		//特点:它信息是通过.作为分隔符,.mp3为歌曲的类型
		
		//获取文件后缀的名称
		int pos = name.lastIndexOf("."); //获取.的位置
		//如果有多个.,indexOf获得从左边数第一个.出现的位置
		//lastIndexOf获得从右边数第一个
		
		String extName = name.substring(pos+1);
		System.out.println("扩展名:" + extName);
	}
	
	@Test	//把英文转换大写或者小写
	public void covert() {
		String name = "tonyChan";
		//大写,飞机票名字全大写
		System.out.println( name.toUpperCase() );
		
		//小写
		System.out.println( name.toLowerCase() );
	}
	
	@Test	//判断前缀和后缀
	public void withs() {
		String n1 = "歌曲.周杰伦.双节棍.mp3";	//歌曲
		String n2 = "视频.梁静茹.勇气.mp4";	//视频
		
		//判断是否为歌曲开头
		System.out.println( n1.startsWith("歌曲") ); //true
		System.out.println( n2.startsWith("歌曲") ); //false
		
		if(n1.startsWith("歌曲")) {
			System.out.println(n1+" 是歌曲");
		}else {
			System.out.println(n1+" 不是歌曲");
		}
		
		//判断是否为.mp3结束
		System.out.println( n1.endsWith("mp4") ); //false
		System.out.println( n2.endsWith("mp4") ); //true
		
		if(n2.endsWith("mp4")) {
			System.out.println(n2+ " 是视频");
		}else if(n2.endsWith("mp3")) {
			System.out.println(n2+ " 是音频");
		}
	}
}


案例:数字替换

package test;

import org.junit.Test;

public class TestReplace {
	@Test //替换数字
	public void replaceNumber() {
		//特征,字符中含有手机号(快递信息)
		String s = "王同学 130,李同学 133,陈同学 186";
		
		//需求:保证信息安全,把手机号都隐藏起来用*替代
		//1.传统方式
		//思路:获取每个字符,然后判断是否为数字,是数字就用*替代
		
		//第一步:获取每个字母 charAt(index) 0~length
		String n = ""; //空的字符串(空串)
		for(int i=0; i<s.length(); i++) {
			//System.out.println(s.charAt(i));
			//第二步:判断当前字符是否为数字 char ASCII 0(48)~9(57),if判断
			char c = s.charAt(i);	//当前的字符,ascii整数值
			if(c>=48 && c<=57) {  //0~9直接
				//System.out.println("*");
				n += "*";
			}else {
				//System.out.println(c);
				n += c;
			}
		}
		System.out.println(n);
		
		
		//2.正则方式
		//正则表达式:\\\\d,代表匹配数字0~9
		String x = s.replaceAll("\\\\d", "*"); //把数字替换*
		System.out.println(x);
	}
}

身号解析

package test;

/*
 * 身号的解析:610113198009102113
 * 特征,还有什么信息呢?
 * 1)18位
 * 2)前6位:地址码610113 陕西省西安市,GB国家标准
 * 3)中间8位:出生年月,1980年09月10日
 * 4)后面3位:顺序号,顺序号最后一位奇数代表男,偶数代表女
 * 5)最后一位校验码
 */
public class TestCardNo {
	public static void main(String[] args) {
		//身号
		String cardNo = "610113198009102113";
		
		if(cardNo.length()==18) {
			String addressNo = cardNo.substring(0, 6);
			System.out.println("地址码:" + addressNo);
			
			String birthday = cardNo.substring(6, 14);
			System.out.println("出生年月:" + birthday);
			
			String sno = cardNo.substring(14, cardNo.length()-1);
			System.out.println("顺序号:" + sno);
			
			String sex = sno.substring(sno.length()-1);
			//把字符串转换整数api,Integer.parseInt("1")
			int n = Integer.parseInt(sex);  //类型转换
			
			if(n%2 == 0) { //利用取余判断是偶数还是奇数
				System.out.println("性别:女");
			}else {
				System.out.println("性别:男");
			}
			
			String checkNo = cardNo.substring(cardNo.length()-1);
			System.out.println("校验码:" + checkNo);
		}else {
			System.out.println("身号不正确!");
		}
		
	}
}

小结

以上是关于java小白训练营day05-API:API+字符串工具类+身份证解析的主要内容,如果未能解决你的问题,请参考以下文章

java小白训练营2109-day05-API:API+字符串工具类+身份证解析

202106小白训练营day05-java API

202106小白训练营day01-java第一个案例HelloWorld

java小白训练营day05-知识回顾

java小白训练营2109-day05-知识回顾

java小白训练营2109-day03-数据结构:基本类型+包装类型+数组+对象