You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中使用fgets读取文本后如何移除换行符(↵)?

解决MATLAB中fgets读取行包含换行符的问题

嘿,这个场景我太熟悉了!用fgets从文本文件读行时,确实会把换行符(Windows下的\r\n或者Linux/macOS下的\n)一并读进line变量里,给你几个简单实用的移除方法:

  • 用strtrim函数(最推荐)
    这个函数不仅能精准移除行尾的换行符,还能顺带清理字符串开头和结尾的空格、制表符这类空白字符,一步到位:

    file_name='file_name.txt'; 
    fid=fopen(file_name); 
    line=strtrim(fgets(fid));
    
  • 用deblank函数(仅清理末尾空白)
    如果你的行开头有需要保留的空格,不想被误删,那deblank就很合适——它只移除字符串末尾的空白字符(包括换行符):

    line=deblank(fgets(fid));
    
  • 手动截取字符串(精准控制场景)
    要是你需要更精细的控制,比如只移除特定的换行符,可以先找到换行符的位置再截取:

    line=fgets(fid);
    % 查找换行符的索引(兼容不同系统的换行格式)
    newline_pos = strfind(line, sprintf('\n')); 
    if ~isempty(newline_pos)
        line = line(1:newline_pos-1);
    end
    % 如果是Windows的\r\n,还可以额外处理\r
    cr_pos = strfind(line, sprintf('\r'));
    if ~isempty(cr_pos)
        line = line(1:cr_pos-1);
    end
    

    不过这个方法相对繁琐,除非有特殊需求,不然还是前两个函数更省心。

  • 换一种读取方式从根源避免
    也可以直接用其他读取函数跳过换行符,比如textread或者fscanf:

    % 用textread一次性读取所有行,自动去掉换行符
    lines = textread(file_name, '%s', 'delimiter', '\n');
    % 或者用fscanf逐行读取
    line = fscanf(fid, '%[^\n]', 1);
    fgets(fid); % 跳过当前行的换行符,避免影响下一次读取
    

内容的提问来源于stack exchange,提问作者user552231

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:27:06