Có thể viết một cái gì đó như:Làm cách nào để viết chuỗi nhiều dòng trong Rust?
fn main() {
let my_string: &str = "Testing for new lines \
might work like this?";
}
Có thể viết một cái gì đó như:Làm cách nào để viết chuỗi nhiều dòng trong Rust?
fn main() {
let my_string: &str = "Testing for new lines \
might work like this?";
}
Nếu tôi đọc language reference một cách chính xác, sau đó nó trông như thế nên làm việc. Các ref ngôn ngữ nói rằng \n
vv được hỗ trợ (như thoát chung, để chèn ngắt dòng vào chuỗi của bạn), cùng với "thoát bổ sung" bao gồm LF, CR và HT.
Một cách khác để làm điều này là sử dụng một raw string literal:
xâu thô không xử lý bất kỳ thoát. Chúng bắt đầu bằng ký tự
U+0072
(r
), tiếp theo là 0 hoặc nhiều ký tựU+0023
(#
) và ký tựU+0022
(dấu ngoặc kép). Cơ thể chuỗi thô có thể chứa bất kỳ chuỗi các ký tự Unicode và chỉ được chấm dứt bởi khácU+0022
(double-quote) nhân vật, sau đó là cùng một số củaU+0023
ký tự (#) trước lễ khai mạcU+0022
(double-quote) tính cách.nhân vật Tất cả Unicode chứa trong cơ thể chuỗi nguyên đại diện cho mình, các nhân vật
U+0022
(double-quote) (trừ khi theo bởi ít nhất là nhiềuU+0023
(#
) ký tự như được sử dụng để bắt đầu chuỗi thô đen) hoặcU+005C
(\
) không có bất kỳ ý nghĩa đặc biệt nào.Ví dụ cho literals chuỗi:
"foo"; r"foo"; // foo "\"foo\""; r#""foo""#; // "foo" "foo #\"# bar"; r##"foo #"# bar"##; // foo #"# bar "\x52"; "R"; r"R"; // R "\\x52"; r"\x52"; // \x52
Đúng, nhưng không cần thiết. Mọi chuỗi ký tự trong Rust có thể là nhiều dòng. – DenisKolodin
Có hai cách viết chuỗi đa dòng trong Rust có kết quả khác nhau. Bạn nên chọn giữa chúng với sự chăm sóc tùy thuộc vào những gì bạn đang cố gắng thực hiện.
Phương pháp 1: lơ lửng khoảng trắng
Nếu một chuỗi bắt đầu với "
chứa một ngắt dòng chữ, trình biên dịch Rust sẽ "nuốt chửng" tất cả các khoảng trắng giữa các nhân vật phi khoảng trắng cuối cùng của dòng và là người đầu tiên ký tự không khoảng trắng của dòng tiếp theo và thay thế chúng bằng một đơn .
Ví dụ:
fn test() {
println!("{}", "hello
world");
}
Không có vấn đề bao nhiêu ký tự (không gian trống) theo nghĩa đen (zero hoặc một trăm) xuất hiện sau khi
hello
, sản lượng của các bên trên sẽ luôn luôn được hello world
.
Cách 2: Dấu gạch chéo ngược ngắt dòng
này hoàn toàn ngược lại. Trong chế độ này, tất cả khoảng trắng trước khi một chữ số \
trên dòng đầu tiên được giữ nguyên và tất cả khoảng trắng tiếp theo trên dòng tiếp theo là cũng được giữ nguyên.
Ví dụ:
fn test() {
println!("{}", "hello \
world");
}
Trong ví dụ này, đầu ra là hello world
. Ngoài ra, như đã đề cập trong một câu trả lời khác, Rust có chuỗi "nguyên văn", nhưng họ không tham gia vào cuộc thảo luận này như trong Rust (không giống như một số ngôn ngữ khác cần dùng đến chuỗi thô) trong nội dung được trích dẫn không có giới hạn, như chúng ta có thể thấy ở trên.
Lee đúng. Dấu gạch chéo ngược có thể được sử dụng để mở rộng một chuỗi liên tục trên nhiều dòng. Khoảng trống hàng đầu được bỏ qua từ dòng thứ hai. –
Cảm ơn - mã ban đầu của tôi có lỗi khác khiến tôi tin rằng '\' sẽ không hoạt động. – sdasdadas