MATLAB中如何将文本写入文件?

3
我需要从我的index.html文件的每一行中删除'index.html'字符串......
我需要使用MATLAB完成此操作。
以下是我到目前为止的进展...
我不知道如何将修改后的行写回到html文件中的同一行。
fid=fopen('index.html');

while ~feof(fid)

    tline=fgetl(fid);

if ~isempty(strfind(tline,'index.html'))
    remline=strrep( tline ,'index.html','');

**% fprintf(fid,remline);
%  fprintf('\n')**

end

end

更新

这个解决方案对我有效:

function WriteToFile(filename)



fid = fopen(filename, 'r+');
fid2 = fopen('index.txt', 'w');


while ~feof(fid)

    tline=fgetl(fid);

    if ~isempty(strfind(tline,'index.html'))
        remline=strrep(tline,'index.html','');

        fprintf(fid2, '%s\r\n', remline);
    else
        fprintf(fid2, '%s\r\n', tline);
    end
end

fclose(fid);
fclose(fid2);

delete(filename)
keyboard
movefile('index.txt','index.html')
5个回答

3

这是一个示例函数:

function WriteToFile(filename, text)
%open file with write permission
fid = fopen(filename, 'w');
%write a line of text
fprintf(fid, '%d\n', text);
%close file
fclose(fid);

请将 %d 替换为实际文本的 %s - Mehdi Khademloo

3

用实际文本替换 %d 和 %s


1
如果你正在处理文本文件,研究一下像filereadtextscan这样的函数的文档会很有用。你采取的方法没有问题(好吧,除了你还没有让它工作),但比必要的更费力。
我预计,如果你将文件读入Matlab字符串中(空间限制允许的话),然后在其上运行一个正则表达式,你可能可以一次性完成替换。

我尝试过了。问题在于fprintf在CSS部分的第一个%处截断了字符串。 - Lord Loh.

1

你调用 fopen() 函数只是以读取方式打开文件,这就是为什么 fprintf() 调用失败的原因。然而,这种方法不能直接奏效,因为你正在改变文本行的长度。

我建议你从输入文件中逐行读取每一行,对其进行更改,然后将其写入临时输出文件中。当你处理完每个输入行后,关闭两个文件,删除输入文件,并将临时输出文件重命名为原始输入文件名。

或者,正如 HPM 所建议的那样,一次性将整个文件读入内存,处理每一行,并一次性将其全部写入“覆盖”输入文件。


0
修改 Niko 的答案(将 %d 替换为 %s),以将实际文本放入文件 a1.m:
fid = fopen('a1.m','w');%open file for writing
fprintf(fid, '%s\n', 'some_text');%write a line of text
fclose(fid);%close file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接