2个版本

0.1.1 2021年3月20日
0.1.0 2021年3月14日

解析器实现中排名第2687

GPL-3.0-or-later

19KB
358

Delim

github crates.io last commit ci status

帮助解析使用分隔符分隔值的字符串。

示例

以下检索由匹配分隔符包裹的值

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.


无运行时依赖