查找并替换文本文件Matlab

时间:2014-05-16 15:24:03

标签: matlab file replace find

我正在编写一个生成数组编号的Matlab代码,它应该替换文本文件(已经存在)中的每个数字,并用它替换所有实例。该数字应为字符串格式。我实现了这个目标:

ita='"';
for i=1:size(z,2)
word_to_replace=input('Replace? ','s');
tik=input('Replacement? ','s');
coluna=input('Column? ');
files = dir('*.txt');
for i = 1:numel(files)
    if ~files(i).isdir % make sure it is not a directory
        contents = fileread(files(i).name);
        fh = fopen(files(i).name,'w'); 
        val=num2str(z(i,coluna));
        word_replacement=strcat(tik,val,ita);
        contents = regexprep(contents,'word_to_replace','word_replacement');
        fprintf(fh,contents); % write "replaced" string to file
        fclose(fh) % close out file
    end
end
end

我希望代码打开文件#1('file.txt'),找到并用'word_to_replace'替换所有实例'word_replacement'并保存到同一个文件中。 txt文件的数量是未定义的,可以是100或10000。

非常感谢提前。

1 个答案:

答案 0 :(得分:2)

您的代码存在以下问题:

contents = regexprep(contents,'word_to_replace','word_replacement');

您正在使用正则表达式在文本文件中查找word_to_replace的任何实例,并将其更改为word_replacement。查看代码,似乎这些变量都包含字符串。我假设你想要变量的内容而不是变量的实际名称。

因此,只需删除regexprep的第二个和第三个参数周围的引号,这应该可行。

换句话说,这样做:

contents = regexprep(contents, word_to_replace, word_replacement);