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算法

Download history 2/week @ 2024-03-12 6/week @ 2024-03-26 14/week @ 2024-04-02 18/week @ 2024-04-09 13/week @ 2024-04-16 42/week @ 2024-04-23 11/week @ 2024-04-30 15/week @ 2024-05-07 52/week @ 2024-05-14 6/week @ 2024-05-21 2/week @ 2024-05-28 42/week @ 2024-06-04 6/week @ 2024-06-11 20/week @ 2024-06-18 18/week @ 2024-06-25

每月下载量 88

MIT/Apache

94KB
2K SLoC

Rust 2K SLoC // 0.0% comments Python 323 SLoC // 0.1% comments

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.0MIT许可证 提供。

依赖项

~175KB