我想将removeChild
字符更改为','
并将其保存到文本文件
所有文件都采用以下格式:
'\n'
我想这样做:
546,234,453,685,.....,234
我对此问题的启动是这样的:
546
234
453
685
...
234
让我一步一步解释:
第一次我打开当前的文本文件
fid=fopen(files{i});
strArr=fscanf(fid,'%s');
newstrArr=strrep(strArr,',','\n');
% Take each .txt input
for j=1:length(newstrArr)
Array=[Array newstrArr(j)];
endfor
第二,我在文本文件中找到了字符串
fid=fopen(files{i});
请注意,您无法用%d替换%s。 (如果我错了,请纠正我)
第三次我用换行符替换逗号
strArr=fscanf(fid,'%s');
第4我将每个字符添加到带有for循环的新数组
newstrArr=strrep(strArr,',','\n');
但是当我显示时,使用;
for j=1:length(newstrArr)
Array=[Array newstrArr(j)];
endfor
我有这个输出:
当我保存到文本文件时,我有相同的输出。
如何用换行符正确替换逗号?
答案 0 :(得分:4)
问题是您要插入文字'\n'
(字符\
和n
)而不是换行符。这是因为在Octave,a single-quote enclosed string ignores escape sequences。如果您希望Octave尊重转义序列,可以使用双引号字符串将\n
转换为换行符。
strrep(strArr, ',', "\n");
或者,如果您希望代码与MATLAB兼容,则需要使用char(10)
(实际的换行符)。这是因为MATLAB没有双引号括号。
output = strrep(strArr, ',', char(10));
另一种选择是在,
分割您的输入并使用sprintf
添加换行符(它会将\n
视为换行符)
values = strsplit(strArr, ',');
output = sprintf('%s\n', values{:});
如果您只想将每个条目保存到文件中的新行,则可以改为使用fprintf
。
values = strsplit(strArr, ',');
fout = fopen('output.txt', 'w');
fprintf(foug, '%s\n', values{:});
fclose(fout);
答案 1 :(得分:0)
如果你真的只想取代","只需使用换行符
in = fileread ("yourfile");
out = strrep (in, ",", "\n")
out = 546
234
453
685
234
顺便说一句,看看" \ n"之间的区别(在GNU Octave中换行)和' \ n' (字面意思\ n)
答案 2 :(得分:0)
另一种选择是使用regexprep()
,这具有兼容MATLAB的优点。假设您想要的换行符约为\n
,那么
regexprep('123,456,789',',','\n')
ans = 123
456
789
通过fprintf()
输出到文件时,结果如下所示
123
456
789
如果文本编辑器理解换行约定。