Java字符串【String】---略解

Java字符串【String】—略解

构造方法

表达式 释义 注意
String a = “abc”; 作为基本类型处理:【推荐方法】
String a = new String (“abc”).intern(); 将新的字符对象放进java虚拟机的常量区;作用和上面一样
String a = new String(“abc”) 作为引用类型处理
String a = new String(char[] chars); 用字符数组构造字符串对象
String a = new String (byte[], CharSet cs) 用字节数组和字符集构造字符串对象 如果字节数组中包含中文字节,字符集两端不一致会导致【中文乱码】

静态方法

​ String val = String.valueOf( Xxx obj); 【必须掌握】

拼接

格式化字符串
表达式 释义 注意
String concat = String.format(“%x,…”, v1,…,vn); %s —String|%c —char| %d—double| %.nf —float 复用性底
String concat = MessageFormat.format(“{0}…{n}”,v1,…,vn)) 坑位可复用 / 少量已知字符串拼接 推荐使用
+ 不推荐使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
String name  = "yqmm";
char gender = '男';
int age = 18;
double salary = 12345.345;
//格式化字符串
System.out.println(String.format("%s,%c,%d,%.2f",name, gender, age,salary));
//格式化文本---复用性高
System.out.println(MessageFormat.format("{0},{1},{2},{3},{0}",name, gender, age, salary));
//+号
System.out.println(name + "," + gender + "," + age + "," + salary );


/*结果如下:
yqmm,男,18,1234.34
yqmm,男,18,1,234.34,yqmm
yqmm,男,18,1234.34
*/

对象方法

​ String str = …; 【必须掌握】

表达式 释义 注意
byte[] bytes = str.getBytes(CharSet cs); 将str根据指定字符集转化为字节数组
int length = str.length(); 获取字符串的长度
char[] arr = str.toCharArray(); 将字符串转化为字符数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
String name  = "我爱你 I LOVE YOU 拜拜";
//将字符串转化为字符数组
System.out.println(name.toCharArray());
//获取字符串的长度
System.out.println(name.length());
//将str根据指定字符集转化为字节数组
byte[] utf8s = name.getBytes("UTF8");
System.out.println(utf8s);
System.out.println(utf8s.length);
//新建对象为指定字符集编码格式
String name2 = new String (utf8s, Charset.forName("UTF8"));
String name3 = new String (utf8s, Charset.forName("ISO-8859-1")); //国际通用字符集
System.out.println(name2
System.out.println(name3);


/*结果如下:
17
我爱你 I LOVE YOU 拜拜
[B@1b6d3586
27
我爱你 I LOVE YOU 拜拜
我爱你 I LOVE YOU 拜拜
*/

String—比较

表达式 注释 注意
boolean equals = str.equals(String anotherString); 内容等值比较 区分大小写
boolean equals = str.equalsIgnoreCase(String anotherString); 内容等值比较 不区分大小写
boolean yes = str.startwith(String prefix) str是否以prefix开始
boolean yes = str.endwith(String suffix) str是否以suffix结束
boolean yes = str.contains (String midfix) str是否包含midfix
boolean yes = str.matches(String regex) str是否匹配正则表达式 常用于验证

String—截取

表达式 释义 注意
char sign = str.charAt(int index) 获取指定下标位置的字符
String subStr = str.subString(int beginIndex[ , int endIndex]); 截取str从beginIndex开始,至endIndex截止的所有类容 左闭右开

String—分割

表达式 释义 注意
String[] parts = str.split(String regex); 以参数指定的分隔符,将字符串分割为字符串数组 1、字符串分隔符和正则冲突,则需要转义(. —> \\.)
2、 多符号分割(char01 | char02 | char03|…)

String—查找

​ 【从指定位置fromIndex开始(包含)】找到arg在str中的位置

​ 如果不存在返回-1

​ 否则返回 0~str.length()-1

表达式 释义 注意
int index = str.indexOf(char/String arg[ , int fromIndex]); 返回字符串中给定首字符第一次出现的下标 从0 ~ 找
int index = str.lastIndexOf(char/String arg[ , fromIndex]); 返回字符串中给定首字符最后一次出现的下标 从str.length()-1 ~ 找

String—替换

表达式 释义 注意
String afterReplace = str.replaceFirst(String regex, String replacement); 替换第一次出现的字符
String afterReplace = str.replace(char from, char to); 将str中字符替换成指定的字符
String afterReplace = str.replace(String regex, String replacement); 将str中字符替换成指定符合正则表达式的字符
String afterReplace = str.replaceAll(String regex,String replacement); 替换字符出现的每一次符合正则表达式的字符

String—大小写转换

表达式 释义 注意
String upper = str.toUpperCase(); 将str中的字符全部大写
String lower = str.toLowerCase(); 将str中的字符全部小写

String—去空

表达式 释义 注意
String trim = str.trim(); 删除字符串两端的空格

下面附上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
String email = "henry.chen@zbitdeu.cn";

//str 的长度
System.out.println(email.length());

//将字符串转化为字符数组
System.out.println(email.toCharArray());

//内容的等值比较---boolean
System.out.println(email.equals("xxxx"));

//获取指定下标的值
System.out.println(email.charAt(0));

//比较大小
System.out.println(email.compareTo("12312"));

//分割---正则(获得的是字符串数组)
System.out.println(email.split("\\.|@"));

//返回字符串中给定首字符第一次出现的下标
System.out.println(email.indexOf("@"));
System.out.println(email.indexOf('.', email.lastIndexOf('.') - 1));

//返回字符串中给定首字符最后一次出现的下标
System.out.println(email.lastIndexOf("@"));
System.out.println(email.indexOf('.', email.indexOf('.') + 1));

//截取字符串(指定字符包括)
System.out.println(email.substring(email.indexOf('@') + 1));

//前包后不包(左闭右开)
System.out.println(email.substring(email.indexOf('.') + 1, email.indexOf('@')));

//忽略大小写做等值比较
System.out.println(email.equalsIgnoreCase("HENRY.chen@zbitdeu.cn"));
System.out.println(email.equals("HENRY.chen@zbitdeu.cn"));

//以xxx开头的,以xxx结尾的
System.out.println(email.startsWith("henry"));
System.out.println(email.endsWith(".cn"));

//替换
System.out.println(email.replace("cn", "com"));

//替换第一次出现的字符
System.out.println(email.replaceFirst("\\.", "陈"));

//替换字符出现的每一次
System.out.println(email.replaceAll("\\.", "陈"));

//[eh]---e至h的值替换
System.out.println(email.replaceAll("[eh]", "*"));

//e|h ---e或者h的值替换
System.out.println(email.replaceAll("e|h", "*"));

//包含 contains --- boolean
System.out.println(email.contains("chen"));

//是否为空 isEmpty|lenght == 0 --- boolean
System.out.println(email.isEmpty());
System.out.println(email.length() == 0);

//match --- 正则表达式 eg:验证邮箱/////
System.out.println(email.matches("\\w{3,}@[0-9a-zA-Z]{2,}\\.(com|cn|com\\.cn|org)"));

//大小写转换
System.out.println(email.toUpperCase());

//修剪 //去空
System.out.println(email.trim());


/*运行结果如下:
21
henry.chen@zbitdeu.cn
false
h
55
[Ljava.lang.String;@1b6d3586
10
18
10
18
zbitdeu.cn
chen
true
false
true
true
henry.chen@zbitdeu.com
henry陈chen@zbitdeu.cn
henry陈chen@zbitdeu陈cn
**nry.c**n@zbitd*u.cn
**nry.c**n@zbitd*u.cn
true
false
false
false
HENRY.CHEN@ZBITDEU.CN
henry.chen@zbitdeu.cn

*/

Java正则

​ String regex = “…”;

表达式 释义 注意
^ 开启匹配
$ 结束匹配
【一个什么样的符号】
[0-9] 表示一个数字 0-9的数字 :
[a-z] 表示的是一个小写的字母
[A-Z] 表示的是一个大写的字母
[\u4e00-\u9fa5] 表示的是一个汉字
[0-9a-zA-Z] 表示数字、大小写字母、下划线
. 表示的是一个非空内容
\ 转义符
\\s 表示的是一个空内容
\\S 表示的是一个非空内容
\\d 是一个数字
\\D 不是一个数字
\\w 括号中的内容(表示数字、大小写字母、下划线)皆可
\\W 括号中的内容(表示数字、大小写字母、下划线)不可
【多少个什么样的符号】
sign{m, n} 表示的是前一个或一组符号至少出现m次,最多出现n次; 定义符号出现的上下限
eg:
{1,} 至少一次 +
{0,1} 至多一次
{0,} 任意次 *
【特殊语法】
| 或者
() 组合

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!