How to replace multiple strings in a txt file

11 vues (au cours des 30 derniers jours)
steven grob
steven grob le 6 Sep 2012
Hi,
I would like to couple matlab to a another program so I can make a lot of models in a fast way. To do so, I need a txt file with commands in which I can modify some strings with Matlab. For example, in the txt file the commands are written...
*add_points
3
0
x1
0
0
x2
5
0
3
5
0
*set_curve_type line
*add_curves
50
49
49
52
52
51
*set_curve_type fillet
*add_curves
23
24
x3
..... and the idea is to replace x1,x2 and x3 with the values from A in which A is a 10*3 matrix and x1=A(1,:) and x2=(2,:) and x3=A(3,:).
So I have 10 text files to make the 10 models.
My question is: how to do this? I tried to use commands as txtscan, strrep but that didn't work for me...
Any suggestions? What would be the most easy way?
Thanks in advance!
Steven

Réponse acceptée

Sven
Sven le 7 Sep 2012
Modifié(e) : Sven le 7 Sep 2012
Hi Steven,
Try this, it's basically 3 steps:
  1. Read the file into a cell of strings (1 per line in the original file)
  2. Replace the keywords via a regexprep
  3. Save the new file
Does it work for you?
linesCell = cell(10000,1);
fid=fopen('myFile.txt');
lineNo = 0;
while 1
lineNo = lineNo+1;
linesCell{lineNo} = fgetl(fid);
if ~ischar(linesCell{lineNo}), break, end
end
fclose(fid);
linesCell(lineNo:end) = [];
A = rand(3,1);
for i = 1:size(A,1)
linesCell = regexprep(linesCell,sprintf('x%d',i),sprintf('%f',A(i)));
end
fid=fopen('myFileOut.txt','wt');
fprintf('%s\n',linesCell{:});
fclose(fid)
  2 commentaires
steven grob
steven grob le 7 Sep 2012
I added fid in
fprintf(fid,'%s\n',linesCell{:});
but it works perfect now!
Thanks Sven
Sven
Sven le 7 Sep 2012
Ah, yep - typo, but you got it. Glad it helped.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by