1.获取字符串长度
length()方法会返回字符串数量。获取字符串长度,也就是char的数量。语法如下:
-
str.length();
例如,定义一个字符串变量str1,使用length()方法来获取字符串长度,代码如下;
public class HelloJava {
public static void main(String[] args) {
String str1 = "123456";
int num = str1.length();
System.out.println("str1变量字符串长度为: " + num);
}
}
返回的结果;
str1变量字符串长度为: 6
2.获取指定位置的字符
charAt(int index)方法用来获取指定索引的字符,语法如下:
-
str.charAt(index)
- index:char值得索引
首先要理解字符串的索引位置,要先了解字符串的下标,在计算机中,String对象使用数组表示的,字符串下标以0开始以str.length()-1结束。例如:找出ABCDFEG字符串中索引位置为4的字符。
A | B | C | D | E | F | G |
0 | 1 | 2 | 3 | 4 | 5 | 6 |
public class HelloJava {
public static void main(String[] args) {
String str1 = "ABCDEFG";
char chr = str1.charAt(4);//字符串索引位置
System.out.println("字符串中索引位置为4的字符是:" + chr);
int length = str1.length()-1;//字符串最后一位索引位置
char chr1 = str1.charAt(length);
System.out.println("字符串中最后一位索引位置字符是:" + chr1);
}
}
返回结果:
字符串中索引位置为4的字符是:E
字符串中最后一位索引位置字符是:G
3.获取子字符串索引位置
获取子字符串索引位置有四种方法,如下:
- infexOf(String str)
- 获取第一次出现的索引
- indexOf(String str,int fromIndex)
- fromIndex:从指定位置往后查
- lastIndexOf(String str)
- 获取最后一次出现的索引
- lastIndexOf(String str,int fromIndex)
- fromIndex:从指定位置往前查
以字符串We are the world为例,代码如下:
W | e | a | r | e | t | h | e | w | o | r | l | d | |||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
public class HelloJava {
public static void main(String[] args) {
String str1 = "We are the world";
int chr1 = str1.indexOf("e");//记录第一次出现的索引
System.out.println("字符e第一次出现的索引位置为:" + chr1);
int chr2 = str1.indexOf("e", 4);//从指定位置往后查
System.out.println("指定索引位置4往后查,第一次出现字符e的索引位置:" + chr2);
int chr3 = str1.lastIndexOf("r");//获取最后一次出现的索引
System.out.println("字符r最后第一次出现索引位置为:" + chr3);
int chr4 = str1.lastIndexOf("r", 5);//从指定位置往前查
System.out.println("指定索引位置5往前查,第一次出现字符r的索引位置:" + chr4);
}
}
返回结果如下:
字符e第一次出现的索引位置为:1
指定索引位置4往后查,第一次出现字符e的索引位置:5
字符r最后第一次出现索引位置为:13
指定索引位置5往前查,第一次出现字符r的索引位置:4
在日常开发工作中,经常会遇到判断一个字符串是否包含某个字符或者某个字符串的情况,这时就可以用到indexOf()方法了。如果indexOf()方法返回-1时,这就代表字符或者字符串不存在。
判断字符串"ABCD,1234"中是否存在逗号为例,代码如下:
public class HelloJava {
public static void main(String[] args) {
String str1 = "ABCD,1234";
if(str1.indexOf(",") != -1) {
System.out.println("字符逗号存在");
}else {
System.out.println("字符逗号不存在");
}
}
}
返回结果如下:
字符逗号存在
4.判断字符串首尾内容
startsWith()方法和endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都是boolean类型。
- str.startsWith(String prefix)
- prefix:作为前缀的字符串
- str.endsWith(String prefix)
- prefix:作为后缀的字符串
下面以一个数组为例,代码如下:
public class HelloJava {
public static void main(String[] args) {
String str1[] = new String[] {"A1","B1","A2","B2","A3","B3"};
int sum1 = 0;
int sum2 = 0;
for(int i=0;i<str1.length;i++){ //遍历数组
if(str1[i].startsWith("A")){ //查找字符串"A"
sum1++; //计数以字符开头数量
}
if(str1[i].endsWith("2")){ //查找字符串"2"
sum2++; //计数以字符结尾数量
}
}
System.out.println("以字符A开头的字符串有" + sum1 + "个");
System.out.println("以字符2结尾的字符串有" + sum2 + "个");
}
}
返回结果:
以字符A开头的字符串有3个
以字符2结尾的字符串有2个
5.获取字符数组
toCharArray()方法可以将字符串转换为一个字符数组,语法如下:
- str.toCharArray()
将一个字符串转换成字符数组,并按照数组中元素的索引输出数组中的每一个元素,代码如下:
public class HelloJava {
public static void main(String[] args) {
String str1 = "这是一个字符串";
char[] ch = str1.toCharArray();
for(int i=0;i<ch.length;i++) {
System.out.println("第" + i + "个元素 :" + ch[i]);
}
}
}
返回结果如下:
第0个元素 :这
第1个元素 :是
第2个元素 :一
第3个元素 :个
第4个元素 :字
第5个元素 :符
第6个元素 :串
6.判断子字符串是否存在
contains()方法可以判断字符串中是否包含指定的内容,语法如下:
- str.contains(string)
- string:查询的子字符串
下面以一个国家名字为字符串的例子,代码如下:
public class HelloJava {
public static void main(String[] args) {
String str1 = "中国,德国,美国,意大利,加拿大,菲律宾";
System.out.println("国家名字有:" + str1);
boolean bl1 = str1.contains("中国");
System.out.println("国家名字里有中国吗? " + bl1);
boolean bl2 = str1.contains("俄国");
System.out.println("国家名字里有俄国吗?" + bl2);
}
}
返回结果如下:
国家名字有:中国,德国,美国,意大利,加拿大,菲律宾
国家名字里有中国吗? true
国家名字里有俄国吗?false
7.截取字符串
substring()方法返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginIndex处的字符串开始,知道索引endIndex-1处的字符。语法如下:
- str.substring(beginIndex)
- str.substring(beginIndex,endIndex)
- beginIndex:起始索引(包括)
- endIndex:结束索引(不包括)
用字符串变量记录一个身份证号码,截取并输出身份证号中的出生年月日,代码如下:
public class HelloJava {
public static void main(String[] args) {
String str1 = "123456198002157890";
String year = str1.substring(6, 10);
String month = str1.substring(10, 12);
String day = str1.substring(12, 14);
System.out.println("显示日期为" + year + "年" + month + "月" + day + "日");
}
}
返回结果如下:
显示日期为1980年02月15日
8.字符串替换
replace()方法可以实现将指定的字符序列替换成新的字符序列。语法如下:
- str.replace(oldstr,newstr)
- oldstr:要被替换的字符序列
- newstr:替换后的字符序列
- str.replaceAll(regex,newstr) #支持正则表达式
- regex:旧字符串或正则表达式
- str.replaceFirst(regex,newstr) #只替换一次
- regex:旧字符串或正则表达式
三种方法的使用,代码如下:
public class HelloJava {
public static void main(String[] args) {
String str1 = "123456";
String new1 = str1.replace("123", "abc");//替换就字符串换新字符串
System.out.println("replace()方法:" + new1);
String str2 = "123abc";
String new2 = str2.replaceAll("\\d", "?"); //替换所有数字
System.out.println("replaceAll()方法:" + new2);
String str3 = "Java";
String new3 = str3.replaceFirst("a", "A");//只替换一次
System.out.println("replaceFirst()方法:" + new3);
}
}
返回结果:
replace()方法:abc456
replaceAll()方法:???abc
replaceFirst()方法:JAva
9.字符串分割
split()方法可根据给定的分隔符对字符串进行拆分,支持正则表达式,最后返回一个字符串数组,语法如下:
- str.split(regex)
- regex:分隔符表达式
将字符串"A,B,C,D,E,F,G"以逗号进行分割。代码如下:
public class HelloJava {
public static void main(String[] args) {
String str1 = "A,B,C,D,E,F,G";
String new1[] = str1.split(",");
for(int i=0;i<new1.length;i++) {
System.out.println("第" + i + "个元素为:" + new1[i]);
}
}
}
返回结果:
第0个元素为:A
第1个元素为:B
第2个元素为:C
第3个元素为:D
第4个元素为:E
第5个元素为:F
第6个元素为:G
10.大小写转换
toLowerCase()方法可以将字符串中的所有字符转换为小写,如果字符串中没有应该被转换的字符,则将原字符串返回,否则将返回一个新的字符串,并将原字符串每个应该进行小写转换的字符都转换成等价的小写字符,该字符串长度与原字符串长度相同,语法如下:
- str.toLowerCase()
toUpperCase()方法可以将字符串中的所有字符转换为大写,如果字符串中没有应该被转换的字符,则将原字符串返回,否则返回一个新的字符串,并将原字符串中每个应该进行大写转换的字符都换成等价的大写字符,新的字符串长度与原字符串长度相同,语法如下:
- str.toUpperCase()
下面代码将实现字符串的大小写转换
public class HelloJava {
public static void main(String[] args) {
String str = "Java Web";
String lower = str.toLowerCase();
String upper = str.toUpperCase();
System.out.println("字符串转换小写:" + lower);
System.out.println("字符串转换大写:" + upper);
}
}
返回结果如下:
字符串转换小写:java web
字符串转换大写:JAVA WEB
11.去除空白内容
trim()方法可以将字符串首尾处的空白内容都删除,语法如下:
- str.trim()
以下代码将去除带有空白的字符串
public class HelloJava {
public static void main(String[] args) {
String str = " A ";
String trim = str.trim();
System.out.println("原字符串:[" + str + "]");
System.out.println("去除空白的字符串: [" + trim + "]");
}
}
返回结果:
原字符串:[ A ]
去除空白的字符串: [A]
如果空白处不在字符串两遍怎么办,这时候可以用str.replaceAll()字符串替换的方法,代码如下:
public class HelloJava {
public static void main(String[] args) {
String str = " A B C ";
String replace = str.replaceAll("\\s", "");//使用正则表达式
System.out.println("原字符串:" + "[" + str + "]");
System.out.println("更改后的字符串:" + "[" + replace + "]");
}
}
返回结果:
原字符串:[ A B C ]
更改后的字符串:[ABC]
12.比较字符串是否相等
想要比较两个字符串对象的内容是否相等,就需要使用equals()方法,当且仅当进行比较的字符串不为null,并且与被比较的字符串内容相同时,结果才为true,语法如下:
- str.equals()
创建四个不同的字符串对象,分别用==和equals()方法来查看这些字符串比较的结果,代码如下:
public class HelloJava {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = new String("Hello");
String str3 = new String("你好");
String str4 = str2;
System.out.println("str1 == str2 的结果:" + (str1 == str2));
System.out.println("str1 == str3 的结果:" + (str1 == str3));
System.out.println("str1 == str4 的结果:" + (str1 == str4));
System.out.println("str2 == str4 的结果:" + (str2 == str4));
System.out.println("str1.equals(str2) 的结果:" + str1.equals(str2));
System.out.println("str1.equals(str3) 的结果:" + str1.equals(str3));
System.out.println("str1.equals(str4) 的结果:" + str1.equals(str4));
}
}
返回结果:
str1 == str2 的结果:false
str1 == str3 的结果:false
str1 == str4 的结果:false
str2 == str4 的结果:true
str1.equals(str2) 的结果:true
str1.equals(str3) 的结果:false
str1.equals(str4) 的结果:true