필터 지우기
필터 지우기

replace a string by a cell array in a text file

조회 수: 2 (최근 30일)
H R
H R 2016년 1월 3일
댓글: H R 2016년 1월 4일
Hi, I have a text file 'TEXT.txt' with the following format
DATA
[$1]
/
I would like to use strrep('TEXT.txt', '[$1]', A) in such a way to replace [$1] by cell array A. For instance suppose I have a 2x1 cell array A where
A{1}
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
37 38 39 40 41 42
43 44 45 46 47 48
49 50 51 52 53 54
55 56 57 58 59 60
61 62 63 64 65 66
67 68 69 70 71 72
73 74 75 76 77 78
79 80 81 82 83 84
85 86 87 88 89 90
91 92 93 94 95 96
and A{2} is
97 98 99 100
My TEXT.txt file after replacemnt should look like this:
DATA
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
37 38 39 40 41 42
43 44 45 46 47 48
49 50 51 52 53 54
55 56 57 58 59 60
61 62 63 64 65 66
67 68 69 70 71 72
73 74 75 76 77 78
79 80 81 82 83 84
85 86 87 88 89 90
91 92 93 94 95 96
97 98 99 100
/
  댓글 수: 1
H R
H R 2016년 1월 4일
I have a 1D number array with N numbers say A=[1,2,3,4,5,6,7,8,9,10,...100]; I have a text file 'Test.txt'. Inside the text file I have a string [$1].
Data
[$1]
/
How to replace the string [$1] with the content of the array A in such a way that the array content is written one after each other in multiple lines where only 6 space-delimited numbers are printed in each line except the last line that could be shorter than 6 numbers (depending on the size of A). After this I would like to save the file with other name say 'Test1.txt' with the following contents:
Data
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
...
/

댓글을 달려면 로그인하십시오.

답변 (2개)

Jan
Jan 2016년 1월 3일
편집: Jan 2016년 1월 3일
What is the class of the contents of A{1}? Is it a string or a double matrix?
If it is a string:
FileStr = fileread(FileName);
FileStr = strrep(FileStr, '[$1]', A{1});
fid = fopen(FileName, 'w');
if fid == -1, error('Cannot open file: %s', FileName); end
fwrite(fid, FileStr, 'char');
fclose(fid);
If A{1} contains a double array, convert it to a string at first:
S = size(A{1});
Fmt = [repmat('%g\t', 1, S(2) - 1), '%g\n'];
B = sprintf(Fmt, A{1}.');
The rest equals the above solution except for:
FileStr = strrep(FileStr, '[$1]', B);

Walter Roberson
Walter Roberson 2016년 1월 4일
BothA = [ reshape(A{1}.', 1, []), A{2} ];
%print the data up to 6 up line
fprintf(fid, '%d %d %d %d %d %d\n', BothA);
if mod(length(BothA,6) ~= 0
%if there was not an even multiple of 6 then the final \n was not emitted
fprintf(fid, '\n');
end

카테고리

Help CenterFile Exchange에서 Text Files에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

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

Start Hunting!

Translated by