目前,例如,我在 rust 中使用命令列引數
use std::env;
fn main()
{
let args: Vec<String> = env::args().collect();
let arg_string: String = args[1..].join(" ");
let arg_length: u8 = args.len().try_into().unwrap();
println!("{}", arg_string);
}
輸出將是
$ ./target/debug/_program_name_ Testing the args to work
Testing the args to work
所以這允許我在 ./program_name 之后列印所有命令列引數,但我希望輸出像
$ ./target/debug/_program_name_ Testing the args to work
Testing the args to
work
另一個例子
$ ./target/debug/_program_name_ Something here to show to stackoverflow
Something here to show
to stackoverflow
我試著這樣做
use std::env;
fn main()
{
let args: Vec<String> = env::args().collect();
let arg_string: String;
let arg_length: u8 = args.len().try_into().unwrap();
let mut arg_mod_four: u8 = ((arg_length % 4) 4 ) % 4;
let mut array_string: [&str; (arg_mod_four 1)]
for i in 0..arg_mod_four
{
arg_string[i] = args[(4 * i 1)..(4(i 1))].join(" ");
array_string[arg_mod_four 1] = args[(arg_mod_four * 4 1)..arg_length].join(" ")
for j in 0..(arg_mod_four 1)
{
println!("{}", &arg_string[j]);
}
}
但是這里有幾個錯誤,我不想使用它(也不起作用)。
uj5u.com熱心網友回復:
您可以使用切片的chunks 方法:
let args: Vec<String> = env::args().skip(1).collect();
for chunk in args.chunks(4) {
println!("{}", chunk.join(" "));
}
該方法未在迭代器上定義,因此我們.collect()首先呼叫以獲取切片。您可能可以改用itertools,但對于命令列決議,我不會費心去優化。
uj5u.com熱心網友回復:
像這樣?
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
for (i, arg) in args[1..].iter().enumerate() {
match (i 1) % 4 {
0 => println!("{}", arg),
_ => print!("{}", arg),
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/492585.html
上一篇:gsub洗掉轉義字串
