www.gusucode.com > 汽车转动仿真源码程序 > 汽车转动仿真源码程序/汽车转动仿真1/Adams_Car_Data_Processing/find_string.m
function find_string(fin,fidout) % fin=fopen('t_parallel_travel.res'); %打开文件 % fidout=fopen('travel.txt','w'); % 创建MKMATLAB.txt文件,以后将结果都输入到'travel.txt'中去 %%%%%以上fin,fidout在这个子程序里面就不用了,直接在主程序adams_process_main.m里面写上要处理的RES文件名称和要存储 %%%%%的名称%%%%%%%%%%%% captial=''; %定义一个全局变量,代表Entity name 后面里面引号的内容,如_cv_part_XFORM while 1 tline = fgetl(fin); %读一行给tline if ~ischar(tline), break, end %判断是否到了文件尾 ret=findstr(tline,'Entity'); %寻找字符串Entity,若找到了ret里面是放的Entity的首字符E的位置,若找不到ret就是空字符 if isempty(ret) %isempty是判断是不是为空字符。若ret=0 isempty(ret)=1,意思就是若找不到Entity就寻找Component rett=findstr(tline,'Component'); %寻找Component,若找到了rett里面是放的Component的首字母C的位置,若找不到rett就是空字符 if ~isempty(rett) %~isempty就是非isempty,意思就是如果找到了Component,rett里面放的Component的位置~isempty(rett)是真,否则是假 a=findstr(tline,'"'); %寻找双引号",找到的话a里面放的是双引号"的位置,"是一个字符,不是两个字符 b=tline((a(1)+1):(a(2)-1)); %将前两个双引号之间的字符读出来,给b sl=strcat(captical,'_',b); %将captial和b连接起来,中间用.连接的 fprintf(fidout,'%s ',sl); % 此处添加文件写入,将s1写入文件travel.txt中 end else %若找到了Entity,再往下再判断是否为结束的符号/Entity,若不是/Entity,那就是Entity了,然后读Entity后面双引号里面的内容给capital res=findstr(tline,'/Entity'); %判断是否为/Entity,若找不到res是空字符,若找到res是/Entity里面/的位置 if isempty(res) %如果找不到/Entity,isempty(res)就是真 a=findstr(tline,'"'); %寻找双引号 b=tline((a(1)+1):(a(2)-1)); %将Enitity后面前两个双引号之间的字符给b captical=b; %b再给全局变量,以便上面sl=strcat(captical,'.',b)调用 end end end fclose(fidout); % disp(fout(2:end));