八度 - 向字符串数组添加'\ n'不会创建新行

时间:2016-12-11 20:22:48

标签: arrays string octave

我想将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

我有这个输出:

enter image description here

当我保存到文本文件时,我有相同的输出。

如何用换行符正确替换逗号?

3 个答案:

答案 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

如果文本编辑器理解换行约定。