欢迎访问宙启技术站
智能推送

Java中常用的字符串函数 - 使用示例

发布时间:2023-06-13 06:02:19

Java 作为一门面向对象编程语言,支持字符串处理的大量内置函数。这篇文章将会介绍常用的 Java 字符串函数,涵盖字符串基本操作、正则表达式、字符串编码等方面,并配合实际的使用示例。

一、字符串基本操作

1. 字符串比较

Java 提供的字符串比较函数如下:

- equals(String str):比较两个字符串是否相等,区分大小写。

- equalsIgnoreCase(String str):比较两个字符串是否相等,不区分大小写。

- compareTo(String str):从字典顺序上比较两个字符串大小,如果相等则返回 0,如果当前字符串小于参数字符串则返回负数,否则返回正数。

示例:

String s1 = "Hello";
String s2 = "hello";
String s3 = "world";

System.out.println(s1.equals(s2));        // false
System.out.println(s1.equals(s3));        // false
System.out.println(s2.equalsIgnoreCase(s1));  // true
System.out.println(s1.compareTo(s2));     // -32(因为 'H' 的 ASCII 码比 'h' 小 32)
System.out.println(s2.compareTo(s3));     // -15(因为 'h' 的 ASCII 码比 'w' 小 15)

2. 字符串查找

Java 提供的字符串查找函数如下:

- indexOf(int ch):返回指定字符 次出现的位置,如果没有找到则返回 -1。

- indexOf(int ch, int fromIndex):返回指定字符在指定位置后 次出现的位置,如果没有找到则返回 -1。

- indexOf(String str):返回指定字符串 次出现的位置,如果没有找到则返回 -1。

- indexOf(String str, int fromIndex):返回指定字符串在指定位置后 次出现的位置,如果没有找到则返回 -1。

- lastIndexOf(int ch):返回指定字符最后一次出现的位置,如果没有找到则返回 -1。

- lastIndexOf(int ch, int fromIndex):返回指定字符在指定位置前最后一次出现的位置,如果没有找到则返回 -1。

- lastIndexOf(String str):返回指定字符串最后一次出现的位置,如果没有找到则返回 -1。

- lastIndexOf(String str, int fromIndex):返回指定字符串在指定位置前最后一次出现的位置,如果没有找到则返回 -1。

示例:

String s = "Hello, world!";

System.out.println(s.indexOf('l'));  // 2
System.out.println(s.indexOf('l', 3));  // 3
System.out.println(s.indexOf("world"));  // 7
System.out.println(s.indexOf("world", 8));  // -1
System.out.println(s.lastIndexOf('l'));  // 10
System.out.println(s.lastIndexOf('l', 9));  // 9
System.out.println(s.lastIndexOf("world"));  // 7
System.out.println(s.lastIndexOf("world", 6));  // -1

3. 字符串截取

Java 提供的字符串截取函数如下:

- substring(int beginIndex):返回从指定位置开始到字符串结尾的子字符串。

- substring(int beginIndex, int endIndex):返回从指定位置开始到指定位置结束的子字符串,不包括结束位置。

示例:

String s = "Hello, world!";

System.out.println(s.substring(2));    // llo, world!
System.out.println(s.substring(2, 6));  // llo,

4. 字符串分割

Java 提供的字符串分割函数如下:

- split(String regex):根据正则表达式分割字符串。

- split(String regex, int limit):限制分割次数。

示例:

String s = "Java is a programming language";

String[] words = s.split(" ");
for (String word : words) {
    System.out.println(word);
}

输出:

Java
is
a
programming
language

5. 字符串连接

Java 提供的字符串连接函数如下:

- concat(String str):将指定字符串连接到此字符串的结尾。

示例:

String s = "Hello";
String s2 = s.concat(", world!");

System.out.println(s2);  // Hello, world!

6. 字符串替换

Java 提供的字符串替换函数如下:

- replace(char oldChar, char newChar):将字符串中指定字符替换为新的字符。

- replace(CharSequence target, CharSequence replacement):将字符串中指定字符序列替换为新的字符序列。

示例:

String s = "Heelo, woold!";

System.out.println(s.replace('e', 'l'));    // Hlloo, wolld!
System.out.println(s.replace("oo", "aa"));  // Heela, waald!

7. 字符串大小写转换

Java 提供的字符串大小写转换函数如下:

- toUpperCase():将字符串中所有字符转换为大写。

- toLowerCase():将字符串中所有字符转换为小写。

示例:

String s = "Hello, world!";

System.out.println(s.toUpperCase());    // HELLO, WORLD!
System.out.println(s.toLowerCase());    // hello, world!

二、正则表达式

Java 中可以使用正则表达式对字符串进行高级的查找、替换等操作。Java 中的正则表达式语法和其他语言的正则表达式语法类似,不过有些细节有所不同。

1. 匹配

Java 中可以使用 String 和 Pattern 类的 matches 方法对字符串进行正则表达式匹配。

- String.matches(String regex):将此字符串和给定的正则表达式进行匹配,返回一个 boolean 类型的值表示匹配是否成功。

- Pattern.compile(String regex):将指定的正则表达式编译成一个 Pattern 对象,用于对字符串进行匹配。

- Matcher.matches():将输入字符串与模式进行匹配,返回一个 boolean 类型的值表示匹配是否成功。

示例:

String s = "13512345678";

if (s.matches("1[3-9]\\d{9}")) {
    System.out.println("匹配成功");
} else {
    System.out.println("匹配失败");
}

2. 查找

Java 中可以使用 Pattern 类的 matcher 方法来进行字符串的查找操作。

- Pattern.matcher(CharSequence input):创建一个匹配给定输入和此模式的 Matcher 对象。

Matcher 类提供了以下查找操作:

- find():在输入的任意位置查找模式。

- start():返回上一次匹配操作的起点。

- end():返回上一次匹配操作的结束位置。

- group():返回上一次匹配操作所匹配到的字符串。

示例:

String s = "Hello, world!";

Pattern pattern = Pattern.compile("wo\\w+");
Matcher matcher = pattern.matcher(s);

if (matcher.find()) {
    System.out.println(matcher.start());   // 7
    System.out.println(matcher.end());     // 12
    System.out.println(matcher.group());   // world
}

3. 替换

Java 中可以使用 String 类的 replaceAll 方法来进行字符串的替换操作。

- replaceAll(String regex, String replacement):用给定的 replacement 替换字符串中匹配给定的 regex 的所有字串。

示例:

String s = "Hello, world!";

String replaced = s.replaceAll("world", "Java");
System.out.println(replaced);   // Hello, Java!

三、字符串编码

Java 中的字符串编码指的是将字符串转换为字节流,或将字节流转换为字符串的过程。Java 默认使用 UTF-16 编码存储字符串,但是在网络传输、文件读写等操作中需要将字符串或字节流按照指定的编码进行相互转换。

1. 字符串转字节流

Java 中可以使用 String 类的 getBytes 方法将字符串转换为字节流。

- getBytes():使用默认的字符集将字符串编码为新的字节数组。

- getBytes(String charsetName):使用指定的字符集将字符串编码为新的字节数组。

示例: