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

2025-11-09 19:25:29

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

                       

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

2、清空空间,输入文件路径,以及ID号,和厚度。

clc

clear

close all

filename='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个字符

end

for jl=1:10-LenstrTID

    strnewtemp=[' ',strnewtemp];%添加空格,保证只占用10个字符

end

LenstrPID=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==10

strnew=[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

    end

end

fclose(fid);

if flag

    disp('k文件中没有厚度或者指定PartID');

else

    disp('修改完成');

end

else

    disp('值占用空间不是10个字节,检查程序')

end

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

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢