#phone-number #numbers #phone #formatter #parser

phonenumber-fixed

用于解析、格式化和验证国际电话号码的库

1个不稳定版本

0.3.1+8.12.9-1 2023年1月26日

#2418 in 解析器实现

Apache-2.0

14MB
3.5K SLoC

phonenumber Crates.io phonenumber License 构建状态

Rust版本的libphonenumber,由Google提供。

用法

将以下内容添加到您的Cargo.toml

[dependencies]
phonenumber = "0.1"

示例

以下示例解析、验证和格式化给定的电话号码。

extern crate phonenumber;

use phonenumber::Mode;
use std::env;

fn main() {
	let mut args = env::args().skip(1).collect::<Vec<_>>();

	if args.len() < 1 {
		panic!("not enough arguments");
	}

	let number  = args.pop().unwrap();
	let country = args.pop().map(|c| c.parse().unwrap());

	let number = phonenumber::parse(country, number).unwrap();
	let valid  = phonenumber::is_valid(&number);

	if valid {
		println!("\x1b[32m{:#?}\x1b[0m", number);
		println!();
		println!("International: {}", number.format().mode(Mode::International));
		println!("     National: {}", number.format().mode(Mode::National));
		println!("      RFC3966: {}", number.format().mode(Mode::Rfc3966));
		println!("        E.164: {}", number.format().mode(Mode::E164));
	}
	else {
		println!("\x1b[31m{:#?}\x1b[0m", number);
	}
}

依赖项

~7.5MB
~142K SLoC