texto separar seguido salto quitar parrafos parrafo para nueva margen lineas linea horizontales frases escribir brincar rust

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ácter U+0023 ( # ) y un carácter U+0022 (comillas dobles). El cuerpo de cadena sin formato puede contener cualquier secuencia de caracteres Unicode y solo se termina con otro carácter U+0022 (comilla doble), seguido por el mismo número de caracteres U+0023 (#) que precedieron a la apertura U+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 tantos U+0023 ( # ) caracteres como se usaron para iniciar el literal de cadena sin formato) o U+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.