MATLAB替换TXT文件中的指定行的全部内容

MATLAB替换TXT文件中的指定行的全部内容

本文说明:

本文是在“利用matlab把指定字符串在原位置替换为新的字符串(替换txt文件中的部分数据)”一文,
原文链接:https://blog.csdn.net/u013614126/article/details/19681665
的基础上,针对其未解决的替换txt某行全部内容fseek函数的缺陷进行讨论,提出问题的办法(改进)。

问题提出

在上述文章章末这样写道:
根据Matlab的帮助文件,实现重写有两种办法,一种是替换的内容的长度等于原来一行内容长度的时候,可以精确替换,另一种是替换的内容的长度大于原来一行内容长度的时候,这一行之后的所有行都要重新写。

在本人学习研究之后,发现若txt文档很大(长),替换的内容的长度大于原来一行内容长度的时候,这一行之后的所有行都要重新写,必然很繁琐,且耗时。故提出以下解决办法,即使替换内容大于原先行长度,也只需要重写指定行内容即可。

问题解决

  1. 第一步要求:
    将txt文件中的替换指定行后空一行,保存
  2. 第二步,写MATLAB程序:
clc;
clear all;
close all;
 
replaceLine = 5;     %指定的替换行,将第5行替换
myformat = '%s\n';   %输出格式,注意:\n不能少
newData ='LAY';         %替换内容
 
fid = fopen('NEW.txt','r+');    
%txt在MATLAB工作目录下,直接写文件名和后缀即可,否则请写全路径,如:fid = fopen('C:\NEW.txt','r+'); 
for k=1:(replaceLine-1)
   fgetl(fid);
end
 
% 设置光标位置
fseek(fid, 0, 'cof'); %在文件当前位置光标向后移动0字节

fprintf(fid, myformat, newData);  %重写该行 
fclose(fid);

3.第三步 运行

若有更好的解决办法,请指正。

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在MATLAB,可以使用`fileread`和`filewrite`函数来对txt文件多次替换。 首先,使用`fileread`函数读取txt文件的内容,并将其存储在一个字符串变量。然后,使用`strrep`函数进替换操作,将需要替换的字符串替换为新的字符串。替换操作可以进多次,每次替换后,更新字符串变量。 最后,使用`filewrite`函数将更新后的字符串变量写入txt文件,完成多次替换的操作。 以下是一个简单的示例代码: ```matlab % 读取txt文件的内容 fileContent = fileread('textfile.txt'); % 多次替换操作 fileContent = strrep(fileContent, '替换前的字符串1', '替换后的字符串1'); fileContent = strrep(fileContent, '替换前的字符串2', '替换后的字符串2'); fileContent = strrep(fileContent, '替换前的字符串3', '替换后的字符串3'); % 将更新后的内容写入txt文件 fileID = fopen('textfile.txt', 'w'); fprintf(fileID, '%s', fileContent); fclose(fileID); ``` 需要注意的是,在进替换操作时,确保提供的替换前字符串与txt文件的字符串完全匹配,以避免出现意外替换。另外,可以根据需要修改替换前和替换后的字符串内容,以实现具体的替换效果。 ### 回答2: 在MATLAB,可以使用fileread函数读取txt文件的内容,并使用strrep函数进字符串替换。如果想要实现多次替换,可以使用循环结构来重复进替换操作。 首先,使用fileread函数将txt文件的内容读取到MATLAB的字符串变量,例如将txt文件内容存储在变量txt。 ```matlab txt = fileread('file.txt'); ``` 然后,定义替换规则,将需要替换的字符串和替换后的字符串存储在两个单元格数组。例如,将需要替换的字符串存储在cell1数组,将替换后的字符串存储在cell2数组。 ```matlab cell1 = {'old_str1', 'old_str2', ...}; cell2 = {'new_str1', 'new_str2', ...}; ``` 接下来,使用循环结构,根据替换规则依次对txt字符串进多次替换。 ```matlab for i = 1:length(cell1) txt = strrep(txt, cell1{i}, cell2{i}); end ``` 最后,使用filewrite函数将替换后的字符串写入到txt文件。 ```matlab filewrite('file.txt', txt); ``` 以上就是使用MATLABtxt文件多次替换的方法。 ### 回答3: 在MATLABtxt文件多次替换,可以按照以下步骤进: 1. 首先,使用`fopen`函数打开txt文件指定读取和写入的文件权限。例如:`fileID = fopen('filename.txt', 'r+');` 2. 使用`fscanf`函数读取文件内容,并将读取到的文本存储在一个字符数组。例如:`fileContent = fscanf(fileID, '%c');` 3. 使用`regexprep`函数进替换操作。该函数可以根据正则表达式将指定的内容替换为新的内容。例如:`newContent = regexprep(fileContent, '要替换的文本', '替换后的新文本');` 4. 使用`frewind`函数将文件指针重置到文件开头位置。例如:`frewind(fileID);` 5. 使用`fprintf`函数将新的替换后的文本写入文件。例如:`fprintf(fileID, '%s', newContent);` 6. 关闭文件,使用`fclose`函数。例如:`fclose(fileID);` 以上步骤完成一次替换操作,如果需要进多次替换,可以使用循环结构,重复执步骤2到步骤6,每次更改替换的文本内容。 需要注意的是,正则表达式是用来匹配和替换文本的强大工具。可以根据具体的需求,使用不同的正则表达式来完成不同类型的替换操作。 希望以上回答能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值