MATLAB:将字符串插入字符串

时间:2016-10-17 02:07:56

标签: string matlab

是否有一种聪明(简单)的方法将字符串插入另一个字符串?我的直觉告诉我这是一个老问题,解决了很多方面。

例如,将'cats'插入字符串:

'今天正在下雨和狗。'

产量:

'今天正在下雨的猫狗。'

在我的m文件中,我使用:

tempString='cats ';
gpsFile='It's raining and dogs today.';
pFlights=14;  % insertion point of target string 

3 个答案:

答案 0 :(得分:1)

让我们设置两个名为s0s1的字符串。我们在s1的{​​{1}}位置插入s0p 代码很简单:

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

希望我没有重新发明轮子