4

MATLABsstrrep做的事情与我预期的不同:

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

我希望字符串被增量替换,因此 firstabbbab和 than 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
4

1 回答 1

2

Matlab 的文档strrep告诉你你需要知道什么。从页面底部的提示部分:

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

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

于 2013-01-25T14:40:46.477 回答