4

MATLABstrrepは、私が予想していたものとは異なることを行っています。

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 は、strfind 関数と同様に、origStr 内の oldSubstr のすべてのインスタンスを検索します。重複するパターンの場合、strrep は複数の置換を実行します。例セクションの最後の例を参照してください。

strrep最後の例では、との動作を比較していますregexprep。私はregexprepあなたが文字列でやりたいことをすると思います。数値を操作するには、 を使用して文字列に変換し、それchar(vector)を実行regexprepしてから、 を使用して数値に戻すことができますdouble(string)

于 2013-01-25T14:40:46.477 に答える