programing

문자열을 연결하려면 어떻게 해야 하나요?

css3 2023. 4. 10. 22:08

문자열을 연결하려면 어떻게 해야 하나요?

다음 유형의 조합을 연결하려면 어떻게 해야 합니까?

  • 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" 상자도 있습니다.

https://crates.io/crates/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