Как убрать символ новой строки `\ n` из строки? - PullRequest
1 голос
/ 28 июня 2019

Я пытаюсь удалить \n символы новой строки из String (содержимое файла, считанное из файла) и преобразовать его в Vec<u8>.

Пример входной строки:

let ss = String::from("AAAAAAAA\nBBBBBBBBB\nCCCCCC\nDDDDD\n\n");
fn parse(s: String) -> Vec<u8> {
    let s = s.chars().skip_while(|c| *c == '\n');
    let sett = s.into_iter().map(|c| c as u8).collect();

    sett
}

Хотя я не получаю ошибки, skip_while, похоже, не удаляет символы новой строки в строке.Что я здесь не так делаю?Есть ли лучший способ удалить символы новой строки из String?

1 Ответ

1 голос
/ 28 июня 2019

Вы можете заменить \n из строки, а затем преобразовать его в Vec<u8> с into_bytes ()

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

Если вы хотите сделать это сИтераторы, вы можете сделать это с фильтром:

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

Вы можете назвать это следующим образом:

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));
}

Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...