문자열을 연결하려면 어떻게 해야 하나요?
다음 유형의 조합을 연결하려면 어떻게 해야 합니까?
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
를 참조할 수 있습니다.
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
되지 않음( no)mut
한정자)또 다른 변종이 있습니다.String
변이할 필요는 없어요이 동작은, 이 동작에 필요한 특성의 실장입니다.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
는, 콜 할 수 .+
.
만약 우리가 둘 다 손대지 않고 새로운 끈을 만들고 싶다면요?가장 간단한 방법은 다음과 같습니다.
fn main() {
let borrowed_string: &str = "hello ";
let another_borrowed_string: &str = "world";
let together = format!("{}{}", borrowed_string, another_borrowed_string);
// After https://rust-lang.github.io/rfcs/2795-format-args-implicit-identifiers.html
// 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);
// After https://rust-lang.github.io/rfcs/2795-format-args-implicit-identifiers.html
// 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);
}
몇 가지 수동적인 방법이 더 있는데, 몇 가지 방법은 여기저기서 한두 가지 할당을 피하는 것입니다.가독성을 위해 위의 두 개로 충분하다고 생각합니다.
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);
}
상기 코드의 출력은 다음과 같습니다.
AB
abc
번째 방법 「 」 「 」 「 。Using format!()
fn main() {
let mut _a = "a".to_string();
let _b = "b".to_string();
let _c = format!("{}{}", _a, _b);
println!("{}", _c);
}
상기 코드의 출력은 다음과 같습니다.
AB
확인해 보고 Rust 놀이터로 실험해보세요.
저는 그 방법이+
여기서도 언급할 필요가 있습니다.
assert_eq!(
("My".to_owned() + " " + "string"),
["My", " ", "string"].concat()
);
매크로도 있지만 리터럴용만 있습니다.
let s = concat!("test", 10, 'b', true);
assert_eq!(s, "test10btrue");
문자열 보간에 의한 연결
업데이트: 2021년 12월 28일 현재, 이것은 Rust 1.58 베타판입니다.스트링 보간 작업에 더 이상 러스트 나이틀리 빌드가 필요하지 않습니다.(나머지 답변은 후세에 남김)
RFC 2795 발행 2019-10-27: 많은 사람들이 "문자열 보간"이라고 알고 있는 것을 실행하기 위한 암묵적 인수를 지원하는 것을 제안합니다. 즉, 문자열을 연결하기 위한 인수를 문자열 내에 포함시키는 방법입니다.
RFC: https://rust-lang.github.io/rfcs/2795-format-args-implicit-identifiers.html
최신 문제 상태는 https://github.com/rust-lang/rust/issues/67984에서 확인할 수 있습니다.
이 글을 쓸 때(2020-9-24) Rust Nightly 빌드에서는 이 기능을 사용할 수 있다고 생각합니다.
이를 통해 다음과 같은 약어로 연결할 수 있습니다.
format_args!("hello {person}")
이는 다음과 같습니다.
format_args!("hello {person}", person=person)
자체 문자열 보간 기능을 제공하는 "ifmt" 상자도 있습니다.
콘카트 2String
:
fn concat_string(a: String, b: String) -> String {
a + &b
}
콘카트 2&str
:
fn concat_str(a: &str, b: &str) -> String {
a.to_string() + b
}
Rust 1.58에서는 다음과 같은 두 개 이상의 변수를 연결할 수도 있습니다.format!("{a}{b}{c}")
그건 기본적으로는format!("{}{}{}", a, b, c)
단, 조금 더 짧고 읽기 쉬워요.이 변수들은String
,&str
(및 기타 비스트링 타입도 해당됩니다).그 결과는String
자세한 내용은 여기를 참조해 주세요.
디폴트 in Rust는 Memory Manage와 Owenership과 Move에 관한 모든 것입니다.보통 복사나 딥 복사와 같은 것은 없습니다.따라서 문자열을 조합하는 경우 왼쪽에 String을 입력합니다.String은 확장 가능하고 변환 가능한 타입이어야 합니다.오른쪽은 string literal a.k.a 타입의 String slices입니다.
fn main (){
let mut x = String::from("Hello"); // type String
let y = "World" // type &str
println!("data printing -------> {}",x+y);
}
doc의 공식 스테이트먼트, 이것은 Arthatic + 연산자를 사용하려는 경우를 나타냅니다.
fn main() {
let a = String::from("Name");
let b = "Pkgamer";
println!("{}",a+b)
}
언급URL : https://stackoverflow.com/questions/30154541/how-do-i-concatenate-strings
'programing' 카테고리의 다른 글
UIView의 고정 높이 구속조건을 프로그래밍 방식으로 업데이트하려면 어떻게 해야 합니까? (0) | 2023.04.10 |
---|---|
SDF 파일(SQL Server Compact Edition)을 열려면 어떻게 해야 합니까? (0) | 2023.04.10 |
Git 커밋의 변경 내용을 확인하려면 어떻게 해야 합니까? (0) | 2023.04.10 |
asp.net에서 목록 <>을 목록에 추가하는 방법 (0) | 2023.04.10 |
Flutter로 앱 표시명 빌드를 변경하려면 어떻게 해야 하나요? (0) | 2023.04.10 |