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

在Java中如何使用StringBuilder函数操作字符串?

发布时间:2023-05-27 11:26:29

String 字符串是一个final 类型,一旦被初始化就无法被修改。这意味着当我们需要频繁修改一个字符串时,我们需要使用其他字符串类来达到所需的效果。StringBuilder 类是 Java 中一个灵活性很高的字符串类,可以满足我们大多数字符串处理需求。

StringBuilder 类的用法非常简单,它提供了很多方法来对字符串进行添加、删除、修改和查询等操作。在本篇文章中,我们将会介绍一些常见的使用 StringBuilder 类的方法,以便insiders快速地了解如何利用它来进行字符串处理。

1. 创建 StringBuilder 实例

要使用 StringBuilder 类处理字符串,首先需要创建它的一个实例。以下是三种不同方法:

StringBuilder sb1 = new StringBuilder();        // 创建一个空的 StringBuilder 实例

StringBuilder sb2 = new StringBuilder("Hello World!");   // 用?指定的字符串初始化一个 StringBuilder 实例

StringBuilder sb3 = new StringBuilder(20);  //创建指定大小的StringBuilder实例(可选地,用于指定StringBuilder容量)

2. append 方法

可以使用 append 方法向 StringBuilder 对象添加任意数量的字符,即在末尾追加内容。有三种常用的 append 方法:

sb1.append("字符串内容1");             // 添加新字符串

sb1.append("字符串内容2");             // 给已有内容后面追加新字符串

sb1.append(new char[]{'h','i'});           // 使用字符数组添加新字符串

sb1.append(123);                        // 使用数字添加值

sb1.append(true);                       // 使用布尔类型添加值

所有 append 方法都返回指定 StringBuilder 对象,所以可以链式调用方法:

StringBuilder sb = new StringBuilder();

sb.append("字符串内容1")

  .append("字符串内容2")

  .append(new char[]{'h','i'})

  .append(123)

  .append(true);

3. insert 方法

insert 方法可以向 StringBuilder 对象的指定位置添加任意数量的字符,即在指定位置插入内容。有三种常用的 insert 方法:

sb1.insert(0, "字符串内容1");             // 在指定位置添加新字符串

sb1.insert(5, "仓储物流");                // 在指定位置添加新字符串

sb1.insert(0, new char[]{'h','i'});           // 使用字符数组添加新字符串

sb1.insert(3, 123);                        // 在指定位置添加值

sb1.insert(5, true);                       // 在指定位置添加值

所有 insert 方法也都返回指定 StringBuilder 对象,所以可以链式调用方法:

StringBuilder sb = new StringBuilder();

sb.append("string A")

  .insert(8, "bing")

  .insert(5, "c")

  .insert(0, new char[]{'h','i'})

  .insert(4, 123)

  .insert(10, true);

4. delete 方法

delete 方法可以通过 startIndex 和 endIndex 指定一个范围内需要删除的内容,该方法返回 StringBuilder 对象的删除后内容。有两个常用的 delete 方法:

sb.delete(startIndex, endIndex);           //删除给定范围内的指定字符串

sb.deleteCharAt(index);                    // 删除给定索引位置的单个字符

使用delete方法并不会创建一个新的StringBuilder实例,而只是更改了源对象的内容。因此,它不需要使用返回的StringBuilder实例。

StringBuilder sb = new StringBuilder("abcdefgh");

sb.delete(1, 4);  //删除bc

sb.deleteCharAt(2); // 删除e

5. replace 方法

replace 方法允许您找到并替换StringBuilder对象中的特定子串。该方法接受两个参数:startIndex和endIndex,用于指定您要找到的原始内容的范围,以及一个需要添加的新内容。有三种常用的 replace 方法:

sb1.replace(0, 2, "AA");  //将sb1中索引从0到2之间的字符串替换为“AA”

sb1.replace(3, 5, new char[]{'h','i'});  //替换字符串中指定位置的字符

sb1.replace(2, 6, "替换内容");     //替换字符串中指定位置的字符

所有 replace 方法也都返回指定 StringBuilder 对象,所以可以链式调用方法:

StringBuilder sb = new StringBuilder("abcdef");

sb.replace(1, 3, "efg");

sb.replace(4, 6, new char[]{'h','i'});

sb.replace(2, 4, "new s");

6. capacity 和 length 方法

capacity 方法返回 StringBuilder 对象的当前容量。默认情况下,StringBuilder 对象的容量为 16,但是可以通过使用具有“容量”参数的构造函数指定一个自定义的初始容量。在调用 append 方法时,如果追加的内容增加 StringBuilder 对象的容量,则 StringBuilder 对象将自动增长以适应新内容。

sb1.capacity(); //获取StringBuilder对象的当前容量

sb1.length(); //获取StringBuilder对象中指定字符串的长度(不同于capacity,index从0开始)

7. Java 8 中新增的方法

Java 8 是一个非常重要的 Java 版本更新,其中添加了很多新功能,包括对字符串类 StringBuilder 的新功能。以下是两个在 Java 8 中新增的方法:

1. String join(CharSequence delimiter, CharSequence... elements)方法:

该方法允许您将多个字符串连接到一个字符串中,并使用特定的分隔符将它们分开。

String[] arr = {"hello","world","java8"};

String joinedString = String.join(" ", arr);

2. chars() 方法

该方法可以将StringBuilder对象中的内容转换为一个 IntStream 对象。这允许您以更直接的方式访问StringBuilder对象中的内容,方便我们进行其他操作。

StringBuilder stringBuilder = new StringBuilder("helloWorld");

IntStream stream = stringBuilder.chars();

stream.forEach(printStream::print);

总结

Servlet StringBuilder 类使得字符串处理更加简便和可读性高。可以在代码中使用 StringBuilder 类来构建、编辑和操作字符串的内容,尤其是在需要频繁修改字符串时。StringBuilder 提供了多种方法,可以帮助insiders更加灵活地处理字符串。符合Java的链式风格的API设计使得StringBuilder 的使用变得更加简单。