20 个版本 (13 个稳定版)
1.3.1 | 2023年11月15日 |
---|---|
1.2.6 | 2023年11月15日 |
0.4.2 | 2023年11月12日 |
0.3.1 | 2023年11月11日 |
0.1.0 | 2023年11月11日 |
#159 in 压缩
每月 145 次下载
15KB
271 行
person_struct_parser
Rust 源代码解析器
- GITHUB: https://github.com/DavydKod/person_struct_parser
- CRATES.IO: https://crates.io/crates/person_struct_parser
Person_struct_parser(PSP) 是一个解析库,可以将字符串解析成人员对象。
- PSP 有一个名为 Person 的结构,用于存储有关人员(姓名、年龄、城市、邮编、电话号码)的信息(代码
person_struct_parser::person_module::Person
)。
pub struct Person {
///name of the person
pub name: String,
///age of the person
pub age: u32,
///city where the person lives
pub city: String,
///zip
pub zip: u32,
///phone number
pub phone: String
}
- 为 Person 实现了一个函数
person_struct_parser::person_module::normalize
,用于将对象数据减少到 规范形式
pub fn normalize(&mut self) -> &mut Self
- 为 Person 实现了函数
person_struct_parser::person_module::parse
,它是将字符串解析为带有规范化的 Person 对象的主要方法
pub fn parse(string: &str) -> anyhow::Result<Person>
-
为 Person 实现了
std::fmt::Display
-
解析语法
low_alpha = {'a'..'z'}
high_alpha = {'A'..'Z'}
digit = {'0'..'9'}
name = {high_alpha ~ low_alpha+}
age = {digit{1,4}}
city = {high_alpha ~ (low_alpha+ | (low_alpha+ ~ ('-' | ' ') ~ low_alpha+))}
zip = {digit{5}}
phone_number = {'+' ~ (digit{12} | digit{10})}
person = {name ~ ' ' ~ age ~ ' ' ~ city ~ zip ~ ' ' ~ phone_number}
示例
- 规范化。为了规范化人员对象。以下示例将打印
Roman-21-Paris54586 +380546548577
let mut person = Person{name:String::from("RoMAn"),age:21,city:String::from("PaRiS"),zip:54586,phone:"+380546548577"};
println!("{}",person.normalize());
- 解析。以下示例将打印
Roman-21-Paris54586 +380426458777
,因为解析和规范化之后
println!("{}",parse("-Ro*Ma/N//2*-1..PaR*I-s-54gh5h-h8ghj6 --+3804-2/64/58-*777").unwrap());
- 命令行界面。您可以在命令提示符中执行
cargo run -- -i your_file_name.txt
来解析您文件的内容。如果出现问题,它将解析适当的默认文件。结果将放在 Result.txt 中。另外还有更多命令 - 尝试cargo run -- --help
获取更多信息。
自定义错误
使用 thiserror
包创建了一个自定义错误枚举类型用于解析。更多请查看文档。
依赖项
~1–1.6MB
~26K SLoC