4个版本 (稳定版)
1.0.2 | 2024年8月3日 |
---|---|
1.0.1 | 2022年9月24日 |
1.0.0 | 2022年9月23日 |
0.1.0 | 2020年12月18日 |
#27 in 解析器工具
5,208 每月下载次数
用于 broot
9KB
120 行
splitty
一个无std的字符串拆分器,其中引号之间的空格不是分隔符。
不是以引号开始或结束的子字符串被视为普通字符。
use splitty::*;
let cmd = "xterm -e \"vi /some/path\"";
let mut token = split_unquoted_char(cmd, ' ')
.unwrap_quotes(true);
assert_eq!(token.next(), Some("xterm"));
assert_eq!(token.next(), Some("-e"));
assert_eq!(token.next(), Some("vi /some/path"));
lib.rs
:
一个无std的字符串拆分器,其中引号之间的空格不是分隔符。
use splitty::*;
let cmd = "xterm -e \"vi /some/path\"";
let mut token = split_unquoted_char(cmd, ' ')
.unwrap_quotes(true);
assert_eq!(token.next(), Some("xterm"));
assert_eq!(token.next(), Some("-e"));
assert_eq!(token.next(), Some("vi /some/path"));
assert_eq!(token.next(), None);
不是以引号开始或结束的子字符串被视为普通字符。
Splitty具有有限的功能,但已测试了边缘情况
use splitty::*;
let cmd = r#" a "2 * 试" x"x "z "#;
let mut token = split_unquoted_whitespace(cmd)
.unwrap_quotes(true);
assert_eq!(token.next(), Some("a"));
assert_eq!(token.next(), Some("2 * 试"));
assert_eq!(token.next(), Some("x\"x"));
assert_eq!(token.next(), Some("\"z "));
assert_eq!(token.next(), None);