String常⽤⽅法⼀. String构造⽅法
java.lang.String类
String 类代表字符串。Java 程序中的所有字符串字⾯值(如"abc")都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区⽀持可变的字符串。
因为 String 对象是不可变的,所以可以共享。
字符串底层就是⼀个数组,数组被final修饰,数组的地址值不能改变,所以字符串就是⼀个常量private final char value[];
String类的构造⽅法:(IO流的时候⽤到)
String(String original)
//String s1 = new String("abc");
String(byte[] bytes)通过使⽤平台的默认字符集解码指定的byte数组,构造⼀个新的 String。根据编码表查询字节对应的编码,把字节转换为字符串97-->a  65-->A
/
/byte[] bytes = {65,66,67,68,69};
//String s2 = new String(bytes);//s2:ABCDE
String(byte[] bytes,int offset,int length)把字节数组的⼀部分转换为字符串
/*参数: int offset:数组的开始索引  int length:转换的个数 */
//需求:把字节数组中的66和67,转换为字符串
//byte[] bytes = {65,66,67,68,69};
//String s3 = new String(bytes,1,2);//s3:BC
String(char[] value)把字符数组转换为字符串
//char[] chars = {'我','是','⼀','个','中','国','⼈'};
//String s4 = new String(chars);//s4:我是⼀个中国⼈
String(char[] value,int offset,int count)把字符数组的⼀部分转换为字符串
/
/char[] chars = {'我','是','⼀','个','中','国','⼈'};
//String s5 = new String(chars,4,3);//s5:中国⼈
//String s6 = "abc"; 底层 new char[]{'a','b','c'} //s6:abc
⼆. String成员⽅法
String类的常⽤成员⽅法:
1.String concat(String str)将指定字符串连接到此字符串的结尾。把两个字符串连接到⼀起,返回⼀个新的字符串"ab".concat(s2);
2.boolean contains(CharSequence s)判断字符串中是否包含指定的字符串;
2.boolean contains(String str)判断字符串中是否包含指定的字符串;
3.boolean endsWith(String suffix)判断字符串是否以指定的字符串⽽结尾;
4.boolean startsWith(String prefix)判断字符串是否以指定的字符串⽽开头;
5.int indexOf(String str)从前往后在字符串中查另外⼀个字符串,到了返回字符串对应的索引,不到返回-1
6.int lastIndexOf(String str)从后往前在字符串中查另外⼀个字符串,到了返回字符串对应的索引,不到返回-1
7.String replace(CharSequence target, CharSequence replacement)把字符串中所有的⽬标字符串,替换为新的字符串
7.String replace(String target, String replacement)把字符串中所有的⽬标字符串,替换为新的字符串
8.String substring(int beginIndex)从开始索引beginIndex开始截取字符串到字符串的末尾,截取⼀个新的字符串
9.String substring(int beginIndex,int endIndex)从开始索引beginIndex到结束索引endIndex截取字符串;包含头,不包含尾
10.char[]toCharArray()将此字符串转换为⼀个新的字符数组。
11.byte[]getBytes()查询系统默认的编码表把字符串转换为字节数组
12.String toLowerCase()把字符串中所有的英⽂字符转换为⼩写
13.String toUpperCase()把字符串中所有的英⽂字符转换为⼤写
14.String trim()去掉字符串两端的空格
15.String[]split(String regex)根据指定的字符串对⼤的字符串进⾏切割,把⼤的字符串切割为多个⼩字符串,存储到⼀个数组中
三. join⽅法
Java8增强了String的⽅法,可以直接使⽤String.join合并List<String>,
第⼀个参数为连接字符串的字符,我这⾥⽤的是空格" ",第⼆个参数是待连接的字符串集合。
ArrayList<String> list =new ArrayList<>();
Collections.addAll(list,"张三","李四","王五","赵六");
System.out.println(String.join("@",list));//张三@李四@王五@赵六
String[] arr ={"a","b","c"};
System.out.println(String.join("@", arr));//a@b@c
四. String类转换
如何在字符串每个元素之间插⼊空格
第⼀种⽅法
String s ="abcdef";
s = s.replace(""," ").trim();//--->a b c d e
s = s.replace(" ","").trim();//转换回来--->abcdef
System.out.println(s);
第⼆种⽅法
String s ="abcdef";
String s1 ="";
for(int x =0; x < s.length(); x++){
s1 += String.valueOf(s.charAt(x));
s1 +=" ";
}
System.out.println(s1);//--->a b c d e
String[] s2 = s1.split(" ");//切割空格
System.out.println(s2);//[Ljava.lang.String;@1540e19d
StringBuilder sb =new StringBuilder();
for(int x =0; x < s2.length; x++){
sb.append(s2[x]);//遍历添加
}
/
/ String s3 = sb.toString();
String s3 =new String(sb);//转换字符串的两种⽅法
System.out.println(s3);//abcdef
//字符串转换为字符数组
String s ="abc def";
char[] chars = s.toCharArray();
System.out.println(chars[0]);//a
// 字符数组换为字符串
String s1 =new String(chars);
System.out.println(s1);//abc def
// 字符串转换为字符串数组
String[] array = s.split(" ");
System.out.println(array[0]);//abc
// 字符串数组转换为字符串
StringBuilder sb =new StringBuilder();
for(int x =0; x < array.length; x++){            sb.append(array[x]);
}
String s2 = sb.toString();
System.out.println(s2);//abcdef
//字符串转为字节数组
byte[] bytes = s.getBytes();
System.out.println(bytes[0]);//97
/
/字节数组转为字符串
String s3 =new String(bytes);
System.out.println(s3);//abc def
//字符串⼩写转⼤写
String s5 = ss.toUpperCase();
System.out.println(s5);//ABC DEF
//字符串⼤写转⼩写
String s6 = s5.toLowerCase();
System.out.println(s6);//abc def
//替换内容
String s7 = s6.replace("abc","123");        System.out.println(s7);//123 def
/
/替换回来
String s8 = s7.replace("123","abc");        System.out.println(s8);//abc def
五. 获取功能
String s ="abc def";c++中string的用法
//获取字符长度
int length = s.length();
System.out.println(length);//7
//获取指定位置字符
char c = s.charAt(0);
System.out.println(c);//a
//查询⼩串第⼀次出现的位置(没有返回-1)
int index = s.indexOf("ef");
System.out.println(index);//5
//查询⼩串最后⼀次出现的位置(没有返回-1)
int index1 = s.lastIndexOf("ef");
System.out.println(index1);//5
//截取字符串指定开始位置
String s1 = s.substring(4);
System.out.println(s1);//def
//截取字符串指定开始位置和结束位置
String s2 = s.substring(4,5);
System.out.println(s2);//d
/
/根据指定字符进⾏切割
String[] s3 = s.split(" ");
System.out.String(s3));//[abc, def]
六. 正则表达式
Pattern:正则表达式的编译表⽰形式。定义了正则表达式的⼀些规则
String类中和正则表达式相关的⽅法
boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。
String[]split(String regex)根据给定正则表达式的匹配拆分此字符串。
String replaceAll(String regex, String replacement)使⽤给定的 replacement 替换此字符串所有匹配给定的正则表达式的⼦字符串。  String s ="abc ccc ddd";
String[] split = s.split(" +");
System.out.String(split));
/*String replaceAll(String regex, String replacement)
使⽤给定的 replacement 替换此字符串所有匹配给定的正则表达式的⼦字符串。*/
String z = s.replaceAll(" +","z");
System.out.println(z);
使⽤字符串调⽤matches⽅法进⾏校验
正则表达式-字符类:[]表⽰⼀个区间,区间的范围可以⾃⼰定义
语法⽰例:
1.[abc]:代表a或者b,或者c字符中的⼀个。
2.[^abc]:代表除a,b,c以外的任何字符。
3.[a-z]:代表a-z的所有⼩写字符中的⼀个。
4.[A-Z]:代表A-Z的所有⼤写字符中的⼀个。
5.[0-9]:代表0-9之间的某⼀个数字字符。
6.[a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意⼀个字符。
7.[a-dm-p]:a 到 d 或 m 到 p之间的任意⼀个字符
//验证字符串是否以h开头,d结尾,中间是aeiou中的某⼀个字符
String regex ="h[aeiou]d";
System.out.println("had".matches(regex));//true
System.out.println("hsd".matches(regex));//false

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。