E 'possibile scrivere qualcosa di simile:Come scrivere una stringa multilinea in Rust?
fn main() {
let my_string: &str = "Testing for new lines \
might work like this?";
}
E 'possibile scrivere qualcosa di simile:Come scrivere una stringa multilinea in Rust?
fn main() {
let my_string: &str = "Testing for new lines \
might work like this?";
}
Se sto leggendo il language reference correttamente, allora sembra proprio che dovrebbe funzionare. Il linguaggio ref dice che sono supportati \n
(come escape comuni, per inserire interruzioni di riga nella stringa), insieme a "ulteriori escape" inclusi LF, CR e HT.
Un altro modo per farlo è quello di utilizzare un raw string literal:
stringhe letterali Raw non effettua il trattamento fughe. Iniziano con il carattere
U+0072
(r
), seguito da zero o più del carattereU+0023
(#
) e un carattereU+0022
(a virgolette doppie). Il corpo stringa prima può contenere qualsiasi sequenza di caratteri Unicode ed è terminato solo da un'altraU+0022
(doppio apice), seguita dalla stessa numero diU+0023
caratteri (#) che hanno preceduto l'aperturaU+0022
(doppio apice) carattere.Tutti i caratteri Unicode contenuti nel corpo stringa greggio rappresentano stessi, i caratteri
U+0022
(virgolette doppie) (eccetto quando seguito da almeno tantiU+0023
(#
) caratteri come sono stati utilizzati per avviare il stringa grezzo letterale) oU+005C
(\
) non hanno alcun significato speciale.Esempi di stringhe letterali:
"foo"; r"foo"; // foo "\"foo\""; r#""foo""#; // "foo" "foo #\"# bar"; r##"foo #"# bar"##; // foo #"# bar "\x52"; "R"; r"R"; // R "\\x52"; r"\x52"; // \x52
Giusto, ma non necessario. Ogni stringa letterale in Rust può essere multilinea. – DenisKolodin
Ci sono due modi di scrivere stringhe multilinea a Rust che hanno differenti risultati. Dovresti scegliere con cura tra di loro a seconda di cosa stai cercando di realizzare.
Metodo 1: ciondolanti spazi
Se una stringa che inizia con "
contiene un'interruzione linea letterale, il compilatore ruggine sarà "ingoiare" tutti gli spazi vuoti tra l'ultimo carattere non di spaziatura della linea e la prima carattere non di spaziatura della riga successiva e sostituirli con un singolo .
Esempio:
fn test() {
println!("{}", "hello
world");
}
Non importa quante letterali (spazio vuoto) caratteri (zero o un centinaio) compaiono dopo
hello
, l'uscita di quanto sopra sarà sempre hello world
.
Metodo 2: rovesciare linea di rottura
Questo è l'esatto opposto. In questa modalità, tutti gli spazi bianchi prima di un letterale \
sulla prima riga vengono mantenuti e anche tutti gli spazi bianchi successivi sulla riga successiva vengono salvati.
Esempio:
fn test() {
println!("{}", "hello \
world");
}
In questo esempio, l'uscita è hello world
.
Inoltre, come accennato in un'altra risposta, Rust ha stringhe "letterali", ma non entrano in questa discussione come in Rust (a differenza di altri linguaggi che devono ricorrere a stringhe non elaborate per questo) supporta interruzioni letterali di riga nel contenuto citato senza restrizioni, come possiamo vedere sopra.
Lee è corretto. La barra rovesciata può essere utilizzata per estendere una costante di stringa su più righe. Gli spazi bianchi iniziali vengono omessi dalla seconda riga. –
Grazie - il mio codice originale ha avuto un errore diverso che mi ha portato a credere che "\" non avrebbe funzionato. – sdasdadas