是否有一种聪明(简单)的方法将字符串插入另一个字符串?我的直觉告诉我这是一个老问题,解决了很多方面。
例如,将'cats'插入字符串:
'今天正在下雨和狗。'
产量:
'今天正在下雨的猫狗。'
在我的m文件中,我使用:
tempString='cats ';
gpsFile='It's raining and dogs today.';
pFlights=14; % insertion point of target string
答案 0 :(得分:1)
让我们设置两个名为s0
,s1
的字符串。我们在s1
的{{1}}位置插入s0
到p
代码很简单:
s0
或者来自O'Neil的评论的更好解决方案:
strcat( strcat( s0(1:p-1), s1 ), s0(p:end) )
答案 1 :(得分:1)
从16b开始,有insertBefore / insertAfter。
>> insertBefore('It''s raining and dogs today.', 14, 'cats ')
ans =
1×33 char array
'It's raining cats and dogs today.'
效果比较
function profFunc()
chr = 'It''s raining and dogs today.';
tic;
for i = 1:1E5
x = insertBefore(chr, 14, 'cats ');
end
toc
str = string(chr);
tic;
for i = 1:1E5
x = insertBefore(str, 14, 'cats ');
end
toc
tic;
for i = 1:1E5
x = insertString('cats ',chr,14);
end
toc
end
function [ outString ] = insertString( s1, s0, p )
outString=[s0(1:p-1), s1, s0(p:end)];
end
>> profFunc
Elapsed time is 0.737172 seconds.
Elapsed time is 0.245999 seconds.
Elapsed time is 0.283983 seconds.
总而言之,使用char的insertBefore比char索引慢。带字符串的insertBefore比char索引更快。
我已经看到,如果您可以使用全字符串工作流程,您可以看到更多的性能改进。
答案 2 :(得分:0)
function [ outString ] = insertString( s1, s0, p )
%insertString Insert s1 into s0 at point p
%
outString=[s0(1:p-1), s1, s0(p:end)];
end
希望我没有重新发明轮子