#string #replace #multiple #substitute #substring

rreplace

rreplace 是一个旨在简化字符串替换的 Rust 库。它可以处理多个独特的替换,并且只遍历字符串一次。

1 个不稳定版本

0.1.5 2019 年 8 月 28 日
0.1.4 2019 年 8 月 28 日

#1289文本处理

MIT 许可证

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" 匹配。

无运行时依赖