String类适用于描述字符串事物。
那么它就提供了多个方法对字符串进行操作。
常见的操作有哪些?
1、获取
1.1、字符串中包含的字符数,也就是字符串的长度
int length()
1.2、根据位置获取位置上的某个字符。
char charAt(int index)
1.3、根据字符获取该字符在字符串中的位置。
int indexOf(int ch):ch:字符的ASCII码,返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置。
int lastIndexOf(int ch):反向获取
int lastIndexOf(int ch,int fromIndex):从fromIndex指定位置开始,反向获取在字符串中出现的位置
2、判断
2.1、字符串中是否包含某一个子串
boolean contains(String str);
特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中存在。
所以也可以用。
2.2、字符串中是否有内容
boolean isEmpty();原理就是判断长度是否为0
2.3、字符串是否是以指定内容开头
boolean startsWith(String str);
2.4、字符串是否是以指定内容结尾
boolean endsWith(String str);
2.5、判断字符串内容是否相同。复写了Object类中的equals方法。
boolean equals(str);
2.6、判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase();
3、转换。
3.1、将字符数组转换为字符串
构造函数:String(char[]):
String(char[],offset,count):将字符数组的一部分转换为字符串。
静态方法:static String copyValuesOf(char[]);
static String copyValuesOf(char[],offset,count);
static Stirng valuesOf(char[])
3.2、将字符串转换为字符数组
char[] toCharArray():
3.3、将字节数字转换为字符串
String(byte[]):
String(byte[],offset,count):将字节数组的一部分转换为字符串。
3.4、将字符循环转换为字节数组
byte[] getBytes():
3.5、将基本数据类型转换成字符串。
static String valuesOf(int)
static String valuesOf(double)
3+"" == String.valuesOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4、替换
String replace(ordchar,newchar);
5、切割
String[] split(regex);
6、子串:获取字符串的一部分。
String substring(begin);
String substring(begin,end);
7、去除空格,比较。
7.1、装换成大写或者是小写。
String toUpperCase();
String toLowerCase();
7.2、将字符串两端的多个空格去除。
String trim();
7.3、对两个字符串进行自然顺序的比较
int compareTo(str);
代码示例
class StringMethodDemo{
public static void method_exch(){
String s = " Hello Java ";
sop(s.toUpperCase());
sop(s.toLowerCase());
sop(s.trim());
String s1 = "AAA";
String s2 = "aaa";
sop(s1.compareTo(s2));
}
public static void method_sub(){
String s = "abcdef";
sop(s.substring(2));//从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。
sop(s.substring(2,4));//包含头不包含尾。
}
public static void method_split(){
String s1 = "zhangsan,lisi,wangwu";
String[] s2 = s1.split(",");
for (int x = 0; x < s2.length; x++){
sop(s2[x]);
}
}
public static void method_replace(){
String s = "Hello Java";
//String s1 = s.replace('a','n');
String s1 = s.replace("Java","World");
sop(s1);
}
public static void method_trans(){
char[] arr = {'a','b','c','d','e','f','g'};
String str1 = new String(arr);
sop(str1);
String str2 = new String(arr,1,5);
sop(str2);
String s1 = "juhfuhru";
char[] chs = s1.toCharArray();
for (int x=0; x<chs.length; x++){
sop("ch["+x+"]="+chs[x]);
}
}
public static void method_is(){
String str = "ArrayDemo.java";
sop(str.startsWith("Array"));
sop(str.endsWith(".java"));
sop(str.contains("Demo"));
}
public static void method_get(){
String str = "abcdefabcdkf";
sop(str.length());
sop(str.charAt(4));//当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException
sop(str.indexOf('a'));//如果没有找到,返回-1
sop(str.indexOf('b',3));
sop(str.indexOf("cd"));
sop(str.indexOf("cd",5));
//反向索引一个字符出现的位置:
sop(str.lastIndexOf("a"));
sop(str.lastIndexOf("a",3));//从角标3处开始反向获取
}
public static void main(String[] args){
sop("获取:");
method_get();
sop("判断:");
method_is();
sop("转换:");
method_trans();
sop("替换:");
method_replace();
sop("切割:");
method_split();
sop("子串:");
method_sub();
sop("去除空格,比较:");
method_exch();
/*String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
System.out.println(s1==s2);//false
System.out.println(s1==s3);//true
*/
}
public static void sop(Object obj){
System.out.println(obj);
}
}
输出结果
获取:
12
e
0
7
2
8
6
0
判断:
true
true
true
转换:
abcdefg
bcdef
ch[0]=j
ch[1]=u
ch[2]=h
ch[3]=f
ch[4]=u
ch[5]=h
ch[6]=r
ch[7]=u
替换:
Hello World
切割:
zhangsan
lisi
wangwu
子串:
cdef
cd
去除空格,比较:
HELLO JAVA
hello java
Hello Java
-32