字符串的截取
substring()方法 用于返回一个字符串的子字符串,括号里传入的参数若只有一个则为起始索引,有两个则前一个为起始索引、后一个为结束索引+1,因为该方法的截取中用到的两个参数包含头不包含尾。
案例:以字符串形式接受一个手机号,把中间四位屏蔽掉
public static void main(String[] args) {
int i;
for (i = 0; i < 1; i++) {
System.out.println("请输入手机号后回车");
Scanner scanner = new Scanner(System.in);
String number = scanner.next();
if (number.length() == 11) {//检查长度是不是11
for (int j = 0; j < 11; j++) {
if(number.charAt(j)>'9'||number.charAt(j)<'0'){//检测11位上是否都是数字
System.out.println("输入错误,请输入纯数字组成的手机号码");
i--;
break;//只要出错了就不会再执行下面的语句,所以不用对正确的情况进行判断
}
}
String changeNumber = number.substring(0,3)+"****"+number.substring(7);//用一个新的字符串来代表和谐后的电话
System.out.println("修改后的电话号码为:"+changeNumber);
} else {
System.out.println("输入错误,请输入11位的手机号");
i--;
}
}
}
反思:要好好的思考明白索引和数据个数的关系,不思考清楚就会出现各种奇怪的问题(写这个小玩意的时候好几次手机号少一位没发现)
补充:实际上手机号的校验用正则更简单 这块是用遍历和判断硬凑的校验方法 问题很大
字符串的替换
replace()方法需要传入两个参数,一个是替换的目标(替换谁),一个是替换的结果(用谁换),返回替换后的字符串
实际运用的情况下都要配合词库或者前面提到过的正则表达式,所以这个方法不会特别常用。
字符串的切割
split()方法需要传入一个字符串,根据传入的字符串作为规则来切割当前的字符串,返回切割后的字符串
实际api文档里写的是“根据给定正则表达式的匹配拆分字符串”,但是还没搞明白正则,后边学到了再说
在使用正则时如果需要用来切割的目标点不是一个可用的目标(比如.在正则中表示一切字符,如果用.直接作为规则去切割会直接把整个字符串切没),这种情况在表达式的前面加上两个反斜线就能把输入的表达式本身输入进去。
实际运用上建议先正常写,发现报错或者切出来不对劲就加斜线试试。