如何使用Java函数进行字符串查找和替换?
Java中提供了多种函数用于字符串查找和替换。下面将介绍其中的几种常用函数,包括indexOf、lastIndexOf、replace和replaceAll。
一、indexOf函数
indexOf函数可以用来查找字符串中特定字符或子字符串的索引位置。它有两种形式:
1. indexOf(char c):返回字符c在字符串中 次出现的位置的索引,如果字符串中不包含该字符则返回-1。
示例代码:
String s = "hello world";
int index1 = s.indexOf('o');
int index2 = s.indexOf('x');
System.out.println(index1); // 输出:4
System.out.println(index2); // 输出:-1
2. indexOf(String str):返回字符串str在当前字符串中 次出现的位置的索引,如果不包含字符串str则返回-1。
示例代码:
String s = "hello world";
int index1 = s.indexOf("lo");
int index2 = s.indexOf("xx");
System.out.println(index1); // 输出:3
System.out.println(index2); // 输出:-1
indexOf函数还有两种形式:
3. indexOf(char c, int fromIndex):从指定的位置开始查找字符c在字符串中 次出现的位置的索引,如果不包含字符c则返回-1。
示例代码:
String s = "hello world";
int index1 = s.indexOf('o', 5);
int index2 = s.indexOf('x', 5);
System.out.println(index1); // 输出:7
System.out.println(index2); // 输出:-1
4. indexOf(String str, int fromIndex):从指定的位置开始查找字符串str在当前字符串中 次出现的位置的索引,如果不包含字符串str则返回-1。
示例代码:
String s = "hello world";
int index1 = s.indexOf("lo", 3);
int index2 = s.indexOf("xx", 3);
System.out.println(index1); // 输出:3
System.out.println(index2); // 输出:-1
二、lastIndexOf函数
lastIndexOf函数和indexOf函数类似,不同的是它返回的是最后一次出现的位置的索引。lastIndexOf函数也有两种形式:
1. lastIndexOf(char c):返回字符c在字符串中最后一次出现的位置的索引,如果字符串中不包含该字符则返回-1。
示例代码:
String s = "hello world";
int index1 = s.lastIndexOf('o');
int index2 = s.lastIndexOf('x');
System.out.println(index1); // 输出:7
System.out.println(index2); // 输出:-1
2. lastIndexOf(String str):返回字符串str在当前字符串中最后一次出现的位置的索引,如果不包含字符串str则返回-1。
示例代码:
String s = "hello world";
int index1 = s.lastIndexOf("lo");
int index2 = s.lastIndexOf("xx");
System.out.println(index1); // 输出:3
System.out.println(index2); // 输出:-1
lastIndexOf函数也有两种形式:
3. lastIndexOf(char c, int fromIndex):从指定的位置开始查找字符c在字符串中最后一次出现的位置的索引,如果不包含字符c则返回-1。
示例代码:
String s = "hello world";
int index1 = s.lastIndexOf('o', 4);
int index2 = s.lastIndexOf('x', 5);
System.out.println(index1); // 输出:4
System.out.println(index2); // 输出:-1
4. lastIndexOf(String str, int fromIndex):从指定的位置开始查找字符串str在当前字符串中最后一次出现的位置的索引,如果不包含字符串str则返回-1。
示例代码:
String s = "hello world";
int index1 = s.lastIndexOf("lo", 7);
int index2 = s.lastIndexOf("xx", 7);
System.out.println(index1); // 输出:3
System.out.println(index2); // 输出:-1
需要注意的是,无论是indexOf函数还是lastIndexOf函数,都是从前往后遍历字符串查找字符或子字符串的位置,因此它们在处理相同的字符串时可能会得到不同的结果。
三、replace函数
replace函数可以用来将字符串中的一部分内容替换成另一部分内容。它有两种形式:
1. replace(char oldChar, char newChar):将字符串中所有的oldChar字符替换成newChar字符。
示例代码:
String s = "hello world";
String s1 = s.replace('l', 'x');
System.out.println(s1); // 输出:hexxo worxd
2. replace(CharSequence target, CharSequence replacement):将字符串中所有的target字符串替换成replacement字符串。
示例代码:
String s = "hello world";
String s1 = s.replace("lo", "xy");
System.out.println(s1); // 输出:hexy world
需要注意的是,replace函数返回的是一个新的字符串,原字符串并没有被修改。
四、replaceAll函数
replaceAll函数和replace函数类似,不同的是它可以使用正则表达式进行匹配和替换。它也有两种形式:
1. replaceAll(String regex, String replacement):将字符串中所有匹配正则表达式regex的子串替换成replacement字符串。
示例代码:
String s = "hello world";
String s1 = s.replaceAll("l.", "xx");
System.out.println(s1); // 输出:hexxo xxorxx
其中,正则表达式“l.”表示匹配以l开头的任意两个字符,将其换成“xx”。
2. replaceFirst(String regex, String replacement):将字符串中 个匹配正则表达式regex的子串替换成replacement字符串。
示例代码:
String s = "hello world";
String s1 = s.replaceFirst("l.", "xx");
System.out.println(s1); // 输出:hexlo world
需要注意的是,replaceAll函数和replaceFirst函数也返回一个新的字符串,原字符串并没有被修改。
