#escaping #string #str #utilities

nightly strtools

包含各种字符串实用程序的库

5 个不稳定版本

0.3.1 2022年7月9日
0.3.0 2022年7月9日
0.2.0 2022年6月3日
0.1.1 2022年4月18日
0.1.0 2022年4月18日

解析工具 中排名 #250

MIT 许可证

87KB
1.5K SLoC

strtools

strtools 是一个 Rust 库,包含各种有用的字符串扩展。它正在积极开发中,并计划添加更多功能,欢迎批评和建议。

示例

use strtools::StrTools;

// split a string by some separator but ignore escaped ones
let parts: Vec<_> = r"this string\ is split by\ spaces unless they are\ escaped"
    .split_non_escaped('\\', ' ')
    .collect();

assert_eq!(
    parts,
    [
        "this",
        "string is",
        "split",
        "by spaces",
        "unless",
        "they",
        "are escaped"
    ]
);

许可证

strtools 目前使用 MIT 许可证


lib.rs:

该包提供了 StrTools 特征,该特征公开了各种辅助函数,用于处理字符串,例如处理用户输入。

示例

use strtools::StrTools;

// split a string by some separator but ignore escaped ones
let parts: Vec<_> = r"this string\ is split by\ spaces and commas, unless they are\ escaped"
    .split_non_escaped_sanitize('\\', [' ', ','])?
    .collect();

assert_eq!(
    parts,
    [
        "this",
        "string is",
        "split",
        "by spaces",
        "and",
        "commas",
        "",
        "unless",
        "they",
        "are escaped"
    ]
);
use strtools::StrTools;

let parts: Vec<_> = r"\.\/.*s(\d\d)e(\d\d[a-d])/S$1E$2/gu"
    .split_non_escaped_sanitize('\\', '/')?
    .collect();

// parsing user input regex rules like `<rule>/<replace>/<flags>`
// the rule contained an escaped separator but we don't want to
// actually escape it for the regex engine
assert_eq!(parts, [r"\./.*s(\d\d)e(\d\d[a-d])", "S$1E$2", "gu"]);

依赖项

~1.2–1.8MB
~34K SLoC