#arguments #shell #algorithm

nightly shtring

通过空白字符将输入字符串分割成参数,使得匹配引号之间的文本合并成一个参数

1个不稳定版本

0.1.0 2020年11月6日

#25 in #算法

MIT许可证

18KB
354

shtring

通过空白字符将输入字符串分割成参数,使得匹配引号之间的文本合并成一个参数。此外,还支持单字符转义,并在适用情况下忽略。

let input = "Hello world! \"This text will be a single argument.\" 'So \"will\" this.' \\\'Escaped quotes are ignored.\\\'";
let output = shtring::split(input)?;
assert_eq!(output, vec![
    "Hello",
    "world!",
    "This text will be a single argument.",
    "So \"will\" this.",
    "\\\'Escaped",
    "quotes",
    "are",
    "ignored.\\\'",
]);

lib.rs:

通过空白字符将输入字符串分割成参数,使得匹配引号之间的文本合并成一个参数。此外,还支持单字符转义,并在适用情况下忽略。

let input =
    "Hello world! \"This text will be a single argument.\" 'So \"will\" this.' \\'Escaped quotes are ignored.\\'";
let output = split(input)?;
assert_eq!(
    output,
    vec![
        "Hello",
        "world!",
        "This text will be a single argument.",
        "So \"will\" this.",
        "\\'Escaped",
        "quotes",
        "are",
        "ignored.\\'",
    ]
);

提供了便捷函数split,可以将输入字符串轻松转换为解析后的参数的向量(Vec),如果解析器遇到错误,则解析中断并返回该错误。在其他情况下,可以手动创建Parser并遍历解析后的参数。

依赖项

~305–770KB
~18K SLoC