1 个不稳定版本
0.1.5 |
|
---|---|
0.1.4 |
|
#1289 在 文本处理 中
20KB
395 行
rreplace
rreplace 是一个旨在简化字符串替换的 Rust 库。它可以处理多个独特的替换,并且只遍历字符串一次。多个独特的替换可能会相互覆盖,因此 rreplace 遵循以下替换优先级。
- 第一次匹配
- 最长匹配
rreplace 的工作原理
run(&str, Hashmap<&str,&str>) -> String:: run
接受一个用于搜索的字符串参数和一个替换的 Hashmap。哈希表的关键字是要匹配的序列,值是要替换的序列。
[source,rust]
// Create HashMap to define replacements
let replace: Hashmap<&str, &str> = Hashmap::new();
replace.insert("This", "xxxx");
replace.insert("foo", "foobar");
rreplace::run("This string is foo", r);
// Returns: "xxxx string is foobar"
复杂示例
以下是一些示例,展示了 rreplace 更新字符串的优先级。
替换第一个
[source,rust]
replace.insert("This string", "xxx");
replace.insert("string", "yyy");
rreplace::run("This string is foo", r);
// Returns: "xxx is foo"
"This string"
在 "string"
开始匹配之前,因此具有替换优先级。
替换最长
[source,rust]
replace.insert("This string", "yyy");
replace.insert("This", "xxx");
rreplace::run("This string is foo", replace);
// Returns: "xxx is foo"
两个序列在相同的索引处开始匹配,因此较长的替换具有优先级。
更多替换和失败
覆盖
[source,rust]
replace.insert("string is foo", "yyy");
replace.insert("i", "I");
rreplace::run("This string is foo", replace);
// Returns: "ThIs xxx"
"i"
不能在 "string is foo"
内替换。这是因为在 "string is foo"
中 "i"
开始匹配早于字符串中单独的 "i"
。
Failing
[source,rust]
replace.insert("string is X", "yyy");
replace.insert("i", "I");
rreplace::run("This string is foo", replace);
// Returns: "ThIs strIng Is foo"
"string is X"
无法找到完全匹配,因此 "i"
与字符串中的每个 "i"
匹配。