1 个不稳定版本
0.1.0 | 2021年10月7日 |
---|
1441 in 算法
11KB
133 行
Rust 的大括号展开包
此库执行字符串的大括号展开,与Bash等shell中使用的类似(虽然在几个细节上不同)。
算法的功能
给定输入
{hello,goodbye,wonderful} world
此算法产生以下字符串集合
hello world
goodbye world
wonderful world
请注意,与shell大括号展开不同,结果是单独的字符串集合,而不是单个字符串。此外,算法不特别处理空白字符;它们与打印字符处于同等地位。
大括号 {
和 }
用于标记展开列表的开始和结束,逗号分隔列表中的每个项目。字面量的大括号和逗号必须用单个反斜杠转义
this is {\{braced\},[bracketed\, nicely]}
产生
this is {braced}
this is [bracketed, nicely]
如果您需要字面量反斜杠,也必须进行转义
this is a backslash: \\
产生
this is a backslash: \
请注意,转义的反斜杠将从输出中删除。
输入可以包含多个展开列表,并且它们可以嵌套。例如
{hello,goodbye} {world,my {friends,colleagues}}
产生
hello world
goodbye world
hello my friends
hello my colleagues
goodbye my friends
goodbye my colleagues
示例
use brace_expand::brace_expand;
fn main() {
let output = brace_expand("this {is,is not} a pipe");
assert_eq!(output, vec!["this is a pipe", "this is not a pipe"]);
}