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
答案 0 :(得分:2)
Matlab's documentation for strrep
告诉您需要了解的内容。从页面底部的提示部分:
在替换字符串之前,strrep会在origStr中找到oldSubstr的所有实例,就像strfind函数一样。对于重叠模式,strrep执行多次替换。请参阅示例部分中的最后一个示例。
最后一个示例比较了strrep
和regexprep
的行为。我认为regexprep
会在字符串上做你想做的事。要处理数字,您可以使用char(vector)
转换为字符串,在其上运行regexprep
,然后使用double(string)
转换回数字。