首页 > 解决方案 > 如何从字符串中删除换行符?

问题描述

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但似乎没有从字符串中删除换行符。我在这里做错了什么?

标签: rust

解决方案


您基本上可以替换\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));
}

操场


推荐阅读