我如何连接以下类型的组合:
STR和STR String和str 字符串和字符串
我如何连接以下类型的组合:
STR和STR String和str 字符串和字符串
当前回答
从Rust 1.58开始,你还可以像这样连接两个或多个变量:format!("{a}{b}{c}")。这与格式基本相同!("{}{}{}", a, b, c),但更短一点,(可以说)更容易阅读。这些变量可以是String, &str(也可以是其他非字符串类型)。结果是一个字符串。 更多信息请看这个。
其他回答
我认为这里也应该提到concat方法和+:
assert_eq!(
("My".to_owned() + " " + "string"),
["My", " ", "string"].concat()
);
还有concat!宏,但仅适用于字面量:
let s = concat!("test", 10, 'b', true);
assert_eq!(s, "test10btrue");
要将多个字符串连接成一个字符串,并用另一个字符分隔,有几种方法。
我见过的最好的方法是在数组上使用join方法:
fn main() {
let a = "Hello";
let b = "world";
let result = [a, b].join("\n");
print!("{}", result);
}
根据你的用例,你可能更喜欢更多的控制:
fn main() {
let a = "Hello";
let b = "world";
let result = format!("{}\n{}", a, b);
print!("{}", result);
}
我还看到了一些更手动的方法,有些方法避免在这里或那里进行一两次分配。出于可读性的考虑,我认为上面两个就足够了。
在Rust中默认都是关于内存管理和所有权和移动,我们通常不会看到像复制或深度复制 如果你试图连接字符串,那么左手边应该是可增长的字符串类型,应该是可变类型,右手边可以是正常的字符串字面量,也就是类型字符串切片
fn main (){
let mut x = String::from("Hello"); // type String
let y = "World" // type &str
println!("data printing -------> {}",x+y);
}
来自doc的官方声明,这是指向当你尝试使用arthmatic +运算符
在Rust中连接字符串的简单方法
Rust中有各种方法可以连接字符串
第一种方法(使用concat!()):
fn main() {
println!("{}", concat!("a", "b"))
}
上述代码的输出是:
ab
第二个方法(使用push_str()和+运算符):
fn main() {
let mut _a = "a".to_string();
let _b = "b".to_string();
let _c = "c".to_string();
_a.push_str(&_b);
println!("{}", _a);
println!("{}", _a + &_c);
}
上述代码的输出是:
接 abc
第三种方法(使用格式!()):
fn main() {
let mut _a = "a".to_string();
let _b = "b".to_string();
let _c = format!("{}{}", _a, _b);
println!("{}", _c);
}
上述代码的输出是:
ab
看看它,并在Rust操场上进行实验。
fn main() {
let a = String::from("Name");
let b = "Pkgamer";
println!("{}",a+b)
}