在Matlab中使用strrep将1个字符串行替换为2个字符串行

时间:2016-06-22 01:53:45

标签: matlab

我有一个文本文件如下。

enter image description here

我想更改高亮度的弦线,如下所示。

enter image description here

我可以使用' strrep'替换一行。功能如下。

fid=fopen('a.bdf');
A=fread(fid,'uint8=>char')';
B=strrep(A,'PSHELL   1       1      15.      1               1',['PSHELL   1       1      20.      1               1']);

但是,我不知道如何使用strrep将一个字符串行替换为两个字符串行。

我刚刚复制并粘贴如下。

fid=fopen('a.bdf');
    A=fread(fid,'uint8=>char')';
    B=strrep(A,'PSHELL   1       1      15.      1               1',['PSHELL   1       1      20.      1               1
PSHELL   2       1      2.      1               1']);

但是,它没有用。

如何使用' strrep'来替换此字符串行?

1 个答案:

答案 0 :(得分:1)

在新子字符串中添加换行符' \ r \ n' (可能因操作系统而异),如

B=strrep(A,'PSHELL   1       1      15.      1               1',['PSHELL   1       1      20.      1               1\r\nPSHELL   2       1      2.      1               1']);

请记住,当您要写入文件时,您必须使用

fid=fopen('a.bdf','r+');

使用您的方法,您必须使用B中的新内容覆盖原始文件。

编辑:完整代码

fid=fopen('a.bdf','r+');
A=fread(fid,'uint8=>char')';
B=strrep(A,'PSHELL   1       1      15.      1               1','PSHELL   1       1      20.      1               1\r\nPSHELL   2       1      2.      1               1');
frewind(fid);
fprintf(fid,B);
fclose(fid);