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 会出错

正则特殊字符:. * + ? \ [] () 等

posted @ 2026-10-20 20:36  瑜淞蜀  阅读(1)  评论(0)    收藏  举报