rust - separar - quitar salto de linea html
¿Cómo escribo una cadena de múltiples líneas en Rust? (3)
Hay dos formas de escribir cadenas de varias líneas en Rust que tienen diferentes resultados . Debe elegir entre ellos con cuidado, dependiendo de lo que esté tratando de lograr.
Método 1: colgando en espacios en blanco
Si una cadena que comienza con "
contiene un salto de línea literal, el compilador de Rust engullirá todos los espacios en blanco entre el último carácter que no sea de espacio en blanco de la línea y el primer carácter que no sea de espacio en blanco de la línea siguiente y los reemplace con un único .
Ejemplo:
fn test() {
println!("{}", "hello
world");
}
No importa cuántos literal (espacio en blanco) aparecen caracteres (cero o cien) después de
hello
, la salida de lo anterior siempre será hello world
.
Método 2: salto de línea de barra invertida
Esto es exactamente lo opuesto. En este modo, todos los espacios en blanco antes de un literal /
en la primera línea se conservan, y todos los espacios en blanco posteriores en la siguiente línea también se conservan.
Ejemplo:
fn test() {
println!("{}", "hello /
world");
}
En este ejemplo, la salida es hello world
.
Además, como se menciona en otra respuesta, Rust tiene cadenas "crudas literales", pero no entran en esta discusión como en Rust (a diferencia de otros lenguajes que necesitan recurrir a cadenas sin formato para esto) admite saltos de línea literales en contenido entrecomillado sin restricciones, como podemos ver arriba.
¿Es posible escribir algo como:
fn main() {
let my_string: &str = "Testing for new lines /
might work like this?";
}
Otra forma de hacerlo es usar un literal de cadena sin formato :
Los literales de cadena sin procesar no procesan ningún escape. Comienzan con el carácter
U+0072
(r
), seguido de cero o más del carácterU+0023
(#
) y un carácterU+0022
(comillas dobles). El cuerpo de cadena sin formato puede contener cualquier secuencia de caracteres Unicode y solo se termina con otro carácterU+0022
(comilla doble), seguido por el mismo número de caracteresU+0023
(#) que precedieron a la aperturaU+0022
(doble cita) personaje.Todos los caracteres Unicode contenidos en el cuerpo de cadena sin formato se representan a sí mismos, los caracteres
U+0022
(comilla doble) (excepto cuando son seguidos por al menos tantosU+0023
(#
) caracteres como se usaron para iniciar el literal de cadena sin formato) oU+005C
(/
) no tienen ningún significado especial.Ejemplos de literales de cadena:
"foo"; r"foo"; // foo "/"foo/""; r#""foo""#; // "foo" "foo #/"# bar"; r##"foo #"# bar"##; // foo #"# bar "/x52"; "R"; r"R"; // R "//x52"; r"/x52"; // /x52
Si estoy leyendo la referencia del idioma correctamente, parece que debería funcionar. La referencia de idioma indica que /n
etc. son compatibles (como escapes comunes, para insertar saltos de línea en la cadena), junto con "escapes adicionales" que incluyen LF, CR y HT.