gpt4 book ai didi

rust - Rust:使用拍手来分析用户输入的字符串,以进行命令行编程

转载 作者:行者123 更新时间:2023-12-03 11:45:28 26 4
gpt4 key购买 nike

我想创建一个使用拍手来解析输入的命令行。我能想到的最好的是一个循环,要求用户输入,用正则表达式将其分解,并构建一个Vec,然后以某种方式传递给

loop {
// Print command prompt and get command
print!("> "); io::stdout().flush().expect("Couldn't flush stdout");

let mut input = String::new(); // Take user input (to be parsed as clap args)
io::stdin().read_line(&mut input).expect("Error reading input.");
let args = WORD.captures_iter(&input)
.map(|cap| cap.get(1).or(cap.get(2)).unwrap().as_str())
.collect::<Vec<&str>>();

let matches = App::new("MyApp")
// ... Process Clap args/subcommands
.get_matches(args); //match arguments from CLI args variable
}
基本上,我想知道是否有一种方法可以指示Clap使用预先给定的参数列表?

最佳答案

正如@mcarton所说,命令行程序将其参数作为数组而不是字符串传递。 Shell分割原始命令行(考虑引号,变量扩展等)。

如果您的要求很简单,则只需在空白处分割字符串,然后将其传递给Clap。或者,如果您想遵守带引号的字符串,则可以使用shellwords对其进行解析:

let words = shellwords::split(input)?;
let matches = App::new("MyApp")
// ... command line argument options
.get_matches_from(words);

关于rust - Rust:使用拍手来分析用户输入的字符串,以进行命令行编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62031710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com