2个版本
0.1.1 | 2021年3月20日 |
---|---|
0.1.0 | 2021年3月14日 |
在解析器实现中排名第2687
19KB
358 行
Delim
帮助解析使用分隔符分隔值的字符串。
示例
以下检索由匹配分隔符包裹的值
assert_eq!(Delimited::matched("abc:12:def", ":"), Some(12));
以下检索由不匹配模式包裹的值
assert_eq!(Delimited::mismatched("abc<<12*&def", "<<", "*&"), Some(12));
消费分隔符
以下演示如何使用Delimited实例以及consume_matched从字符串中提取两个不同的分隔符值。
let mut d = Delimited::new("aaa :12: bbb :34: ccc");
// Consume first value (expecting 12)
let first = d.consume_matched(":");
// Consume second value (expecting 34)
let second = d.consume_matched(":");
assert_eq!(first, Some(12));
assert_eq!(second, Some(34));
分隔符模式类型
有三种主要的分隔符模式类型
- 匹配分隔符
- 不匹配分隔符
- 前缀
此外,还可以消耗一定数量的字节(无需分隔符),并将其作为字符串返回或解析为指定的类型。
原始字节示例
在以下字符串中,值12占据了前两个字节。
12abc
以下方式可以将前两个字节作为u8消耗:
let d = Delimited::new("12abc");
assert_eq!(d.bytes::<u8>(2), Some(12));
匹配分隔符示例
在以下字符串中,值12被匹配的":"分隔符包裹。
abc:12:def
不匹配分隔符示例
在此字符串中,值12被不匹配的":"和"<"分隔符包裹。
abc:12<def
前缀示例
在此字符串中,我们决定值12由"|"前缀。
abc|12def
Prefixed delimiter searches requires the value length to be specified.