用matlab实现大文本文件指定字符串的查找与替换

时间:2024-10-12 13:05:53

1、需要读取修改源文件如下图

用matlab实现大文本文件指定字符串的查找与替换

2、清空空间,输入文件路径,以及ID号,和厚度。clcclearclose allfilename='D:\thinkpad\Desktop\test.txt';PartID=1;%要修改的ID号newthickness=0.9;%输入修改厚度

3、由于文件中每个字符加上空格是10个字符,所以输入值必须保证10字符,才能与test.txt进行精确查找。也得判断PartID,newthickness是几位。strPartID=num2str(PartID);strnewtemp=num2str(newthickness);LenstrPID=length(strPartID);LenstrTID=length(strnewtemp);for jk=1:10-LenstrPID strPartID=[' ',strPartID];%添加空格,保证只占用10个字符endfor jl=1:10-LenstrTID strnewtemp=[' ',strnewtemp];%添加空格,保证只占用10个字符endLenstrPID=length(strPartID);LenstrTID=length(strnewtemp);

4、查找替换主文竭惮蚕斗件。主要使用fgetl,strfind,strcmp,fseek,已经fprintf写函数。用fprintf函数将strnew替换文件中的” 0.8 0.8 0.8 0.8 “。程序如下:if LenstrPID==10&&LenstrTID==10strnew=[strnewtemp,strnewtemp,strnewtemp,strnewtemp];%生成要替换的厚度[fid,errmsg]=fopen(filename,'r+');if fid<0 disp(errmsg); disp('不能打开文件');else flag=1; while(~feof(fid))%|flag tline=fgetl(fid); if ischar(tline); tline=upper(tline); if ~isempty(strfind(tline, '*SECTION_SHELL')); %字符串匹配 for k=1:2;%将光标移动到PartID行 tpart=fgetl(fid); end if strcmp(strPartID,tpart(1:10));%是否是指定PartID fseek(fid,0,'cof'); %那么找到把光标移到这个字符串前 fprintf(fid,'%s',strnew); % flag=0; break; end end end endendfclose(fid);if flag disp('k文件中没有厚度或者指定PartID');else disp('修改完成');endelse disp('值占用空间不是10个字节,检查程序')end

5、运行结束后,结果如下图:

用matlab实现大文本文件指定字符串的查找与替换
© 手抄报圈