15字符串处理
15字符串处理
java文档(本地文档)
JDK_API_1_6_zh_CN.CHM
字符串所有的常规操作
创建 常用方法 检索 截取 分割 替换
创建
1.直接赋值(常量池方式)
java给它的特权
String a = "你好";
2.先 new 空对象,再赋值
String a = new String();
a = "你好";
3.副本==引用 a是字符串 你好是a的引用
String a = new String("你好");
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。 即会创建 2 个对象a 你好 你好是a的引用,会浪费内存,不建议
4.截取 char 数组的部分内容转字符串
char 数组
char [] b = new char[10];
b[0] = '你';
b[1] = '我';
10个地址
//你 我
//0 1 2 3 4 5 6 7 8 9 10个index
有内存浪费
//b[0] b[1] b.length
穷举法 (穷)
//你 我 他
//0 1 2
char [] a = {'你','我','他'};]
String b = new String(a);
System.out.println(b);
部分内容转字符串
String (char[] value, 初始下标, 长度)
分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
char [] a = {'i','l','o','v','e','b','o','y'};
String b = new String(a,1,4);
System.out.println(b); //输出love
注
长度 空字符串"" 长度为0 空白字符串" "长度为1
常用方法
String str = "我爱您中国";
长度查询
int cd = str.length();
System.out.println(cd);
输出
5
比较是否相同
.equals()
返回boolean类型
boolean bol = str.equals("中国");
输出
false
以什么开头
.startsWith()
返回boolean类型
boolean bol1 = str.startsWith("我");
System.out.println(bol1);
输出
true
以什么结尾
.endsWith()
boolean bol2 = str.endsWith("中国 ");
System.out.println(bol2);
输出
true
应用场景
判断文件类型...
if(fileName.endsWith(".jpg") ||fileName.endsWith(".gif") || fileName.endsWith(".png")) {
}else {
}
比较大小
字符串1.compareTo(字符串2)
1.数字
Integer x = 5;
Integer y = 9;
x.compareTo(y); // 负:5 < 9
y.compareTo(x); // 正:9 > 5
2.String 字符串
按ASCII 字典顺序逐字符比较
若前面都一样、长度不同:返回长度差值
str>str1 返回正数
str<str1 或 字符串第一个为空格 返回负数
str==str1 返回0
String str = "我爱您中国";
String str1 = "我爱您中国";
int num = str.compareTo(str1);
System.out.println(num); // 输出0
检索
底层
1.指针回溯法
2.KMP
第一次出现的位置
a.indexOf(b)
b在a中第一次出现的位置
String a = "我爱您中国爱您中国爱您中国";
String b = "中国";
int wz = a.indexOf(b);
System.out.println(wz); //输出 3
重载
a.indexOf(b,下标)
从下标开始
String a = "我爱您中国爱您中国爱您中国";
String b = "中国";
int wz = a.indexOf(b,4);
System.out.println(wz); //输出 7
最后一次出现的位置
a.lastIndexOf(b)
b在a中最后一次出现的位置
String a = "我爱您中国爱您中国爱您中国";
String b = "中国";
int wz = a.lastIndexOf(b);
System.out.println(wz); //输出 11
重载
a.lastIndexOf(b,下标)
到下标结束
String a = "我爱您中国爱您中国爱您中国";
String b = "中国";
int wz = a.lastIndexOf(b,10);
System.out.println(wz); // 输出 7
截取
字符串名.substring(下标)
从下标截取到末尾
应用
去掉 . 之前的字符串
String fileName = "123456.jpg";
String newStr = fileName.substring(fileName.lastIndexOf("."));
System.out.println(newStr);
分割
.split("符号")
String str = "张-三@李-四@王-五";
String [] data = str.split("@");
System.out.println(data.length);
System.out.println(data[0].split("-")[0]+data[0].split("-")[1]);
System.out.println(data[1]);
System.out.println(data[2]);
输出
3
张三
李-四
王-五
替换
String str = "张-三@李-四@王-五";
String newStr = str.replaceAll("@", " ").replace("-", "");
System.out.println(newStr);
输出
张三 李四 王五
注
replace:字面量替换,不识别正则
replaceAll:正则表达式替换,匹配正则规则
特殊字符用 replaceAll 会出错
正则特殊字符:. * + ? \ [] () 等

浙公网安备 33010602011771号