4个版本
0.0.4 | 2022年12月7日 |
---|---|
0.0.3 | 2022年11月25日 |
0.0.2 | 2022年11月25日 |
0.0.1 | 2022年10月27日 |
#2398 在 算法 中
每月下载量 88
94KB
2K SLoC
masker
一个用于输入数据中掩码模式的库。使用一系列输入模式(例如字符串或切片)和您想要的掩码模式创建一个 Masker
,然后使用它来替换您提供的数据中的这些输入模式。从概念上讲,这并不比多模式和通用替换的查找和替换复杂多少,然而它处理了两个棘手的问题。
- 它允许您以块的形式流式传输数据并仍然应用替换,需要时进行一些小的缓冲。
- 它处理重叠匹配,如果替换任何一个可能会暴露另一个的一部分。
对于后者,假设我们要掩码的目标是 "captcha" 和 "hat";对于 "capchat" 会发生什么?如果我们首先用我们的掩码替换 "captcha",比如说 "XXXX",我们将得到 "XXXXt" 作为输出。如果我们首先替换 "hat",我们将得到 "captcXXXX"。这个库将只产生 "XXXX" - 任何出现在文本中的掩码字符串的任何部分都不会被揭示,即使它与其他掩码字符串重叠。
示例
use masker::Masker;
let m = Masker::new(&["frog", "cat"], "XXXX");
let mut cm = m.mask_chunks();
let mut v = Vec::new();
v.extend(cm.mask_chunk("the ba"));
v.extend(cm.mask_chunk("d f"));
v.extend(cm.mask_chunk("rog sat on the c"));
v.extend(cm.mask_chunk("at"));
v.extend(cm.finish());
许可证
此代码根据 Apache-2.0 或 MIT许可证 提供。
依赖项
~175KB