如何从字符串中删除换行符?

Rus*_*llB 8 rust

String我正在尝试从(从文件读取的文件内容)中删除换行符并将其转换为Vec<u8>.

输入字符串示例:

let ss = String::from("AAAAAAAA\nBBBBBBBBB\nCCCCCC\nDDDDD\n\n");
Run Code Online (Sandbox Code Playgroud)
let ss = String::from("AAAAAAAA\nBBBBBBBBB\nCCCCCC\nDDDDD\n\n");
Run Code Online (Sandbox Code Playgroud)

虽然我没有收到错误,但skip_while似乎没有从字符串中删除换行符。我在这里做错了什么?

Web*_*rix 5

您基本上可以替换字符串中的 ,然后使用into_bytes()\n将其转换为Vec<u8>

fn parse(s: String) -> Vec<u8> {
    s.replace("\n", "").into_bytes()
}
Run Code Online (Sandbox Code Playgroud)

如果你想用迭代器来做到这一点,你可以用过滤器来做到这一点:

fn parse(s: String) -> Vec<u8> {
    s.chars().filter(|c| *c != '\n').map(|c| c as u8).collect()
}
Run Code Online (Sandbox Code Playgroud)

您可以像下面这样调用它:

use std::str::from_utf8;

fn main() {
    let my_string = String::from("AAAAAAAA\nBBBBBBBBB\nCCCCCC\nDDDDD\n\n");
    let parsed_string = parse(my_string.clone());
    println!("{:?}", from_utf8(&parsed_string));
}
Run Code Online (Sandbox Code Playgroud)

操场

  • 在这种情况下,直接使用“bytes()”将 char 转换为 u8 并不是一件好事。 (4认同)