现在我正在键入它,这看起来像是一个非常复杂的过程,但肯定可以更容易地解决。(从使用者输入),将字符分隔成数组,然后调用单个字符来生成一个新的字符串。(不确定函数是否是正确的术语,抱歉)。下面是我目前为止的代码:
use std::io;
fn main() {
println!("Enter P1:");
let mut mono = String::new();
io::stdin()
.read_line(&mut mono)
.expect("Failed to read line");
let mono: Vec<char> = mono.chars().collect();
let x = [mono[0],mono[1]].join("");
println!("Square 1: {x}");
}
我是Rust的新手,所以任何建议都非常有帮助。谢谢!
3条答案
按热度按时间a7qyws3x1#
如果目标只是从输入中提取一个子字符串,那么可以简单得多
修改
正如在注解中指出的,请注意,在真实的生活中的用例中,您应该在使用任意索引对字符串进行切片之前检查字符串的长度......此示例很容易在运行时崩溃。
iovurdzv2#
你可以只对原始字符串
str[a..b].to_string()
进行切片。如果你需要使用char数组,这里有
String::from_iter
,并收集到一个String
中。Example:4xrmg8kj3#
仅供参考,
Vec
是一种类型。join
只适用于字符串切片(&str
),而不适用于char
s。假设您只是尝试在不使用分隔符的情况下连接两个字符,则可以执行以下操作