rust string类型字符串拼接
【摘要】 在 Rust 中,字符串拼接有多种方法,主要取决于你使用的字符串类型(String 或 &str)以及具体场景。以下是常见的拼接方式: 1. 使用 push_str 方法(修改现有 String)适用于将 &str 追加到 String 末尾。let mut s = String::from("Hello");s.push_str(", world!"); // 追加 &strprintln...
在 Rust 中,字符串拼接有多种方法,主要取决于你使用的字符串类型(String
或 &str
)以及具体场景。以下是常见的拼接方式:
1. 使用 push_str
方法(修改现有 String
)
- 适用于将
&str
追加到String
末尾。
let mut s = String::from("Hello");
s.push_str(", world!"); // 追加 &str
println!("{}", s); // 输出: Hello, world!
2. 使用 +
运算符(所有权转移)
+
的左侧必须是String
,右侧是&str
,返回新的String
。- 注意:左侧的
String
会被移动(所有权转移)。
let s1 = String::from("Hello");
let s2 = String::from(", world!");
let s3 = s1 + &s2; // s1 被移动,s2 借用
println!("{}", s3); // 输出: Hello, world!
// println!("{}", s1); // 错误:s1 已移动
3. 使用 format!
宏(推荐)
- 类似
println!
,但返回String
,不转移所有权。 - 适合复杂拼接或混合类型。
let s1 = String::from("Hello");
let s2 = String::from(", world!");
let s3 = format!("{}{}", s1, s2); // 不转移 s1 和 s2 的所有权
println!("{}", s3); // 输出: Hello, world!
println!("{}", s1); // 仍可访问 s1
4. 使用 String
的 +
和 &str
链式拼接
- 可以连续拼接多个
&str
到String
。
let mut s = String::from("Hello");
s += ", "; // 追加 &str
s += "world!"; // 追加 &str
println!("{}", s); // 输出: Hello, world!
5. 拼接字符(push
方法)
- 使用
push
追加单个字符(char
)。
let mut s = String::from("Hello");
s.push('!'); // 追加字符
println!("{}", s); // 输出: Hello!
6. 高效拼接大量字符串(extend
或迭代器)
- 使用
extend
批量追加字符串切片或字符。
let mut s = String::from("Hello");
let parts = vec![" ", "world", "!"];
s.extend(parts); // 追加多个 &str
println!("{}", s); // 输出: Hello world!
关键区别:
方法 | 所有权 | 适用场景 |
---|---|---|
push_str |
修改原 String |
简单追加 &str |
+ |
转移左侧所有权 | 快速拼接(但需移动) |
format! |
不转移所有权 | 复杂或混合类型拼接 |
extend |
修改原 String |
批量追加 |
示例:混合类型拼接
let name = "Alice";
let age = 30;
let s = format!("Name: {}, Age: {}", name, age); // 自动调用 Display
println!("{}", s); // 输出: Name: Alice, Age: 30
根据需求选择合适的方法,format!
通常是通用且安全的选择。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)