다중 행 문자열 리터럴의 구문은 무엇입니까?
Rust에서 문자열 구문이 어떻게 작동하는지 이해하는 데 어려움을 겪고 있습니다.구체적으로, 나는 다중 줄 문자열을 만드는 방법을 찾고 있습니다.
모든 문자열 리터럴은 다음과 같이 여러 줄로 구분할 수 있습니다.
let string = "line one
line two";
는 2줄 문자열로, 와 동일합니다."line one\nline two"
(물론 사용할 수 있습니다.\n
새 라인 이스케이프도 직접).서식 지정을 위해 여러 줄에 걸쳐 문자열을 끊으려면 다음을 사용하여 새 줄과 선행 공백을 벗어날 수 있습니다.\
예:
let string = "one line \
written over \
several";
와 동일합니다."one line written over several"
.
문자열에서 줄 바꿈을 원하는 경우, 줄 바꿈을 추가할 수 있습니다.\
:
let string = "multiple\n\
lines\n\
with\n\
indentation";
와 같습니다."multiple\nlines\nwith\nindentation";
따옴표, 백슬래시 등을 포함하거나 포함하지 않을 수 있는 좀 더 긴 작업을 수행하려는 경우 원시 문자열 리터럴 표기법을 사용합니다.
let shader = r#"
#version 330
in vec4 v_color;
out vec4 color;
void main() {
color = v_color;
};
"#;
문자열 내에 큰따옴표와 해시 기호가 있는 경우 임의 개수의 해시를 구분 기호로 표시할 수 있습니다.
let crazy_raw_string = r###"
My fingers #"
can#"#t stop "#"" hitting
hash##"#
"###;
출력:
#version 330
in vec4 v_color;
out vec4 color;
void main() {
color = v_color;
};
Huon의 답변은 정확하지만 들여쓰기가 번거로우시다면 들여쓰기된 다중 줄 문자열에 대한 절차 매크로인 Indoc을 사용하는 것을 고려해 보십시오.그것은 "오목된 문서"의 약자입니다.다음과 같은 매크로를 제공합니다.indoc!()
여러 줄의 문자열 리터럴을 사용하여 들여쓰기를 취소하므로 공백이 아닌 맨 왼쪽 문자가 첫 번째 열에 있게 됩니다.
let s = indoc! {"
line one
line two
"};
결과는"line one\nline two\n"
.
공백은 문서의 맨 왼쪽 공백 문자를 기준으로 보존되므로, 다음은 줄 1을 기준으로 두 줄의 들여쓰기된 세 개의 공백을 가집니다.
let s = indoc! {"
line one
line two
"};
결과는"line one\n line two\n"
.
외부 상자를 사용하지 않고 줄 바꿈이 있는 여러 줄 문자열의 공백을 세부적으로 제어하려면 다음을 수행합니다.제 프로젝트에서 가져온 예입니다.
impl Display for OCPRecData {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "OCPRecData {{\n\
\x20 msg: {:?}\n\
\x20 device_name: {:?}\n\
\x20 parent_device_name: {:?}\n\
}}", self.msg, self.device_name, self.parent_device_name)
}
}
결과:
OCPRecData {
msg: Some("Hello World")
device_name: None
parent_device_name: None
}
\n\
각 코드 줄 끝에서 적절한 위치에 줄 바꿈을 만들고 이 코드 줄에서 추가 공백을 버립니다.\x20
(16진수; 10진수 32)는 ASCII 공간이며 문자열의 이 줄에 보존될 첫 번째 공간에 대한 표시기입니다.\x20\x20\x20\x20
그리고.\x20
같은 효과가 있습니다.
코드에서 여러 줄 텍스트를 들여쓰려는 경우:
let s = "first line\n\
second line\n\
third line";
println!("Multiline text goes next:\n{}", s);
결과는 다음과 같습니다.
Multiline text goes next:
first line
second line
third line
언급URL : https://stackoverflow.com/questions/29483365/what-is-the-syntax-for-a-multiline-string-literal
'programing' 카테고리의 다른 글
Postgres 사용자가 존재하지 않습니까? (0) | 2023.05.01 |
---|---|
호스트 요소에 "클래스"를 추가하는 방법은 무엇입니까? (0) | 2023.05.01 |
Float에서 날짜 시간 형식을 지정하는 방법 (0) | 2023.05.01 |
VBA를 사용하여 Excel 셀의 배경색을 설정하려면 어떻게 해야 합니까? (0) | 2023.05.01 |
.net에서 관찰 가능한 컬렉션은 어떤 용도로 사용됩니까? (0) | 2023.05.01 |