Rust | str 常用方法

参考 str - Rust

一般认为 str 基于 utf-8 编码,每个字符可能由 1 到 4 个字节组成。

基本方法

.chars().count()

返回它包含的字符个数。

rust 复制代码
assert_eq!("ƒoo".chars().count(), 3);

.is_empty()

判断它是否为空。

rust 复制代码
let s = "";
assert!(s.is_empty());

let s = "not empty";
assert!(!s.is_empty());

.split_whitespace()

根据空格进行划分,返回一个迭代器。

rust 复制代码
let mut iter = "A few words".split_whitespace();

assert_eq!(Some("A"), iter.next());
assert_eq!(Some("few"), iter.next());
assert_eq!(Some("words"), iter.next());

assert_eq!(None, iter.next());

.liens()

根据换行符进行划分,返回一个迭代器。

rust 复制代码
let text = "foo\nbar\n\r\nbaz";
let mut lines = text.lines();

assert_eq!(Some("foo"), lines.next());
assert_eq!(Some("bar"), lines.next());
assert_eq!(Some(""), lines.next());
assert_eq!(Some("baz"), lines.next());

assert_eq!(None, lines.next());

.contains(&str)

判断是否包含某个字符串。

rust 复制代码
let bananas = "bananas";

assert!(bananas.contains("nana"));
assert!(!bananas.contains("apples"));

.starts_with(&str)

判断是否以某个字符串开始。

rust 复制代码
let bananas = "bananas";

assert!(bananas.starts_with("bana"));
assert!(!bananas.starts_with("nana"));

.starts_with(&str)

判断是否以某个字符串结束。

rust 复制代码
let bananas = "bananas";

assert!(bananas.ends_with("anas"));
assert!(!bananas.ends_with("nana"));

strip_prefix(&str)

返回一个去除前缀的字符串,或返回 None

rust 复制代码
assert_eq!("foo:bar".strip_prefix("foo:"), Some("bar"));
assert_eq!("foo:bar".strip_prefix("bar"), None);
assert_eq!("foofoo".strip_prefix("foo"), Some("foo"));

strip_suffix(&str)

返回一个去除后缀的字符串,或返回 None

rust 复制代码
assert_eq!("bar:foo".strip_suffix(":foo"), Some("bar"));
assert_eq!("bar:foo".strip_suffix("bar"), None);
assert_eq!("foofoo".strip_suffix("foo"), Some("foo"));

对于字符串切片的方法

.replace(&str, &str)

返回完成替换后的字符串。

rust 复制代码
let s = "this is old";

assert_eq!("this is new", s.replace("old", "new"));
assert_eq!("than an old", s.replace("is", "an"));

.repeat()

返回重复指定次数后的字符串。

rust 复制代码
assert_eq!("abc".repeat(4), String::from("abcabcabcabc"));
相关推荐
zsqw1231 天前
以 Rust 为例,聊聊线性类型,以及整个类型系统
rust·编译器
Rust研习社1 天前
Rust Tracing 实战指南:从基础用法到生产级落地
rust
分布式存储与RustFS1 天前
MinIO迎来“恶龙”?RustFS这款开源存储简直“不讲武德”
架构·rust·开源·对象存储·minio·企业存储·rustfs
数据知道2 天前
claw-code 源码分析:从 TypeScript 心智到 Python/Rust——跨栈移植时类型、边界与错误模型怎么对齐?
python·ai·rust·typescript·claude code·claw code
Rust研习社2 天前
深入浅出 Rust 迭代器:从基础用法到性能优化
rust
@atweiwei2 天前
langchainrust:Rust 版 LangChain 框架(LLM+Agent+RAG)
开发语言·rust·langchain·agent·向量数据库·rag
skilllite作者2 天前
自进化 Agent 的 skills 别长成烟囱:从多入口分叉到统一发现与 spec 防火带
人工智能·算法·rust·openclaw·agentskills
Rust研习社2 天前
关于 Rust Option 的那些事:从基础到常用 API 全解析
rust
爱分享的阿Q3 天前
Rust加WebAssembly前端性能革命实践指南
前端·rust·wasm