1. 概述
在Java编程中,处理字符串是基础操作。StringBuilder
是字符串处理的常用工具,常用于拼接、反转等操作。掌握String与StringBuilder之间的转换技巧,对高效处理字符串至关重要。
本文将快速演示如何实现这些转换操作。
2. 问题背景
Java中的String是不可变的,一旦创建就不能修改。而StringBuilder是可变字符序列,允许我们在不创建新对象的情况下修改内容。
因此,我们通常将String转换为StringBuilder进行操作,然后再将StringBuilder转换回String获取结果。
我们先看StringBuilder转String,再看反向转换。最后通过一个实际问题应用这些技巧。
为简化演示,我们将使用单元测试断言验证结果。
3. 将StringBuilder转换为String
调用StringBuilder.toString()
是最直接的转换方式:
StringBuilder sb = new StringBuilder("Converting SB to String");
String result = sb.toString();
assertEquals("Converting SB to String", result);
toString()
方法返回包含StringBuilder字符序列的String,顺序保持不变。
有时我们只需要转换部分字符序列,这时可使用substring()
方法:
result = sb.substring(11, 13);
assertEquals("SB", result);
通过传入起始和结束索引,substring()
可提取StringBuilder字符序列的指定部分。
接下来看反向操作:将String转换为StringBuilder。
4. 将String转换为StringBuilder
直接将String对象传给StringBuilder构造函数即可:
String input = "Converting String to SB";
StringBuilder sb = new StringBuilder(input);
assertEquals(input, sb.toString());
也可先创建空StringBuilder实例,再用append()
方法添加字符串:
String input = "C C++ C# Ruby Go Rust";
StringBuilder sb = new StringBuilder().append(input);
assertEquals(input, sb.toString());
当处理单个字符串时,这种方式不如构造函数直观。但在处理多个字符串时特别有用,例如:
String[] strings = new String[] { "C ", "C++ ", "C# ", "Ruby ", "Go ", "Rust" };
StringBuilder sb2 = new StringBuilder();
for (String str : strings) {
sb2.append(str);
}
assertEquals(input, sb2.toString());
创建空StringBuilder后,通过循环调用append()
将字符串数组所有元素添加到字符序列中。
5. 实战案例:拼接与反转
最后用学到的转换技巧解决实际问题。
给定三个字符串,按以下步骤处理:
- 用" | "连接三个字符串
- 反转连接结果
这是典型的字符串转换问题,用StringBuilder可轻松解决:
String str1 = "c b a";
String str2 = "^_*";
String str3 = "z y x";
StringBuilder sb = new StringBuilder(str1)
.append(" | ")
.append(str2)
.append(" | ")
.append(str3)
.reverse();
String result = sb.toString();
assertEquals("x y z | *_^ | a b c", result);
代码通过构造函数创建StringBuilder,用append()
添加分隔符和其他字符串,最后调用reverse()
反转字符序列。sb.toString()
将结果转回String。
6. 总结
本文探讨了String与StringBuilder的相互转换方法。掌握这些技巧后,我们能在Java程序中高效处理字符串操作。
完整示例代码可在GitHub获取。