具有重叠搜索结果的 MATLAB strrep 函数

标签 matlab

MATLABs 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

最佳答案

Matlab's documentation for strrep告诉你你需要知道什么。从页面底部的提示部分:

Before replacing strings, strrep finds all instances of oldSubstr in origStr, like the strfind function. For overlapping patterns, strrep performs multiple replacements. See the final example in the Examples section.

最后一个例子比较了 strrepregexprep 的行为。我想regexprep将在字符串上执行您想要的操作。要处理数字,您可以使用 char(vector) 转换为字符串,对其运行 regexprep,然后使用 double(string) 转换回数字

关于具有重叠搜索结果的 MATLAB strrep 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14521682/

相关文章:

performance - Matlab bsxfun - 为什么 bsxfun 在这种情况下无法工作?

c++ - 将 for 循环从 matlab 转移到 c++

matlab - 如何在编写代码时使 Matlab 的编辑器智能缩进始终打开?

python - Python 中的曲面曲率 Matlab 等价物

Matlab,结构为矩阵形式,矩阵以正确的方式定向

matlab - 使用 Matlab 进行图割

matlab - 检查矩阵是否是Matlab中的单位矩阵

Matlab-将稀疏矩阵转换为复稀疏矩阵

matlab - 如何更改 Matlab 图中线条的顺序?

用于读取写入数组的 csv 的 C++ 程序;然后操作并打印到文本文件中(已经用 matlab 编写)