MATLAB strrep功能,重叠搜索结果

时间:2013-01-25 12:18:23

标签: matlab

MATLAB strrep的做法与我预期的不同:

strrep('ababab', 'bab', 'bbb')

我希望字符串逐步替换,因此首先abbbab而不是abbbbb。但是,MATLAB返回abbbbbb(注意最后的第6个b)。

MATLAB在幕后做什么?找到索引然后在每个索引处插入新字符串?完全不同的东西?

而且,最重要的是,我如何归档预期的结果?


准确地说,上面的示例只是减少其他错误来源的最小示例。在现实世界中,我想用整数向量替换序列:

strrep([1 0 1 0 1 0],  [0  1 0], [0 0 0])

并获取

1 0 0 0 0 0

1 个答案:

答案 0 :(得分:2)

Matlab's documentation for strrep告诉您需要了解的内容。从页面底部的提示部分:

  

在替换字符串之前,strrep会在origStr中找到oldSubstr的所有实例,就像strfind函数一样。对于重叠模式,strrep执行多次替换。请参阅示例部分中的最后一个示例。

最后一个示例比较了strrepregexprep的行为。我认为regexprep会在字符串上做你想做的事。要处理数字,您可以使用char(vector)转换为字符串,在其上运行regexprep,然后使用double(string)转换回数字。