다음 유형의 조합을 어떻게 연결합니까?
str
과str
String
과str
String
과String
답변
문자열을 연결할 때 결과를 저장하기 위해 메모리를 할당해야합니다. 시작하는 가장 쉬운 방법은 다음 String
과 &str
같습니다.
fn main() {
let mut owned_string: String = "hello ".to_owned();
let borrowed_string: &str = "world";
owned_string.push_str(borrowed_string);
println!("{}", owned_string);
}
여기, 우리는 돌연변이 할 수있는 소유 한 문자열을 가지고 있습니다. 메모리 할당을 재사용 할 수 있으므로 효율적입니다. 거기에 비슷한 경우이다 String
와 String
같이, &String
같은 역 참조 할 수있다&str
.
fn main() {
let mut owned_string: String = "hello ".to_owned();
let another_owned_string: String = "world".to_owned();
owned_string.push_str(&another_owned_string);
println!("{}", owned_string);
}
그 후에 another_owned_string
는 손대지 않습니다 ( mut
예선 자 없음 ). 다른 변형있어 소비 을 String
하지만, 변경할 수를 필요로하지 않습니다는. 이것은 왼쪽과 오른쪽 을 취하는 특성 의 구현입니다Add
.String
&str
fn main() {
let owned_string: String = "hello ".to_owned();
let borrowed_string: &str = "world";
let new_owned_string = owned_string + borrowed_string;
println!("{}", new_owned_string);
}
참고 owned_string
로 호출 한 후 더 이상 액세스 할 수 없습니다 +
.
새로운 줄을 만들고 싶고 둘 다 그대로 두려면 어떻게해야합니까? 가장 간단한 방법은 다음을 사용하는 것입니다 format!
.
fn main() {
let borrowed_string: &str = "hello ";
let another_borrowed_string: &str = "world";
let together = format!("{}{}", borrowed_string, another_borrowed_string);
println!("{}", together);
}
두 입력 변수는 변경할 수 없으므로 터치하지 않습니다. 의 조합에 대해 동일한 작업을 수행하려는 경우 형식을 지정할 수도 String
있다는 사실을 사용할 String
수 있습니다.
fn main() {
let owned_string: String = "hello ".to_owned();
let another_owned_string: String = "world".to_owned();
let together = format!("{}{}", owned_string, another_owned_string);
println!("{}", together);
}
당신은하지 않습니다 이 사용하는 format!
것처럼. 한 문자열을 복제 하고 다른 문자열을 새 문자열에 추가 할 수 있습니다 .
fn main() {
let owned_string: String = "hello ".to_owned();
let borrowed_string: &str = "world";
let together = owned_string.clone() + borrowed_string;
println!("{}", together);
}
참고 -내가 한 모든 유형 사양은 중복입니다. 컴파일러는 여기서 사용되는 모든 유형을 유추 할 수 있습니다. 나는이 질문이 그 그룹에게 인기가 있기를 기대하기 때문에 Rust를 처음 접하는 사람들에게 명확하게 추가했습니다!
답변
다른 문자열로 구분하여 여러 문자열을 단일 문자열로 연결하려면 몇 가지 방법이 있습니다.
내가 본 가장 좋은 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);
}
내가 본 몇 가지 더 수동적 인 방법이 있으며, 일부는 여기저기서 하나 또는 두 개의 할당을 피합니다. 가독성을 위해 위의 두 가지가 충분하다고 생각합니다.
답변
나는 그 concat
방법을 생각하며 +
여기에서도 언급해야합니다.
assert_eq!(
("My".to_owned() + " " + "string"),
["My", " ", "string"].concat()
);
그리고 concat!
매크로도 있지만 리터럴에만 있습니다.
let s = concat!("test", 10, 'b', true);
assert_eq!(s, "test10btrue");
답변
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 + &_b);
}
위 코드의 출력은 다음과 같습니다.
ab
알파벳
세 번째 방법 ( Using format!()
) :
fn main() {
let mut _a = "a".to_string();
let _b = "b".to_string();
let _c = format!("{}{}", _a, _b);
println!("{}", _c);
}
위 코드의 출력은 다음과 같습니다.
ab
그것을 확인하고 녹 플레이 그라운드로 실험