#quote #string #split #character #no-std

无std splitty

考虑引号进行字符串拆分的工具

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 解析器工具

Download history 789/week @ 2024-05-03 656/week @ 2024-05-10 630/week @ 2024-05-17 569/week @ 2024-05-24 537/week @ 2024-05-31 694/week @ 2024-06-07 669/week @ 2024-06-14 788/week @ 2024-06-21 791/week @ 2024-06-28 992/week @ 2024-07-05 1307/week @ 2024-07-12 1787/week @ 2024-07-19 925/week @ 2024-07-26 1679/week @ 2024-08-02 1074/week @ 2024-08-09 1206/week @ 2024-08-16

5,208 每月下载次数
用于 broot

MIT 许可证

9KB
120

MIT Latest Version docs Chat on Miaou

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);

无运行时依赖