0

Matlab でルール ベースの文字列編集機能を開発しようとしています。

次のような文字列を生成したとします。

myString = '/+*43/*/+34/5*2/*'

さらに、一連のルールに従って特定の数学演算子を削除したいとします。

  1. 「*」または「/」演算子で文字列を開始することはできません
  2. 文字列を演算子で終了することはできません
  3. 1 と 2 に違反しない限り、順次演算子はそのシーケンスの最初の演算子に置き換えられます。

たとえば、上記の文字列は次のように短縮されます。

myNewString = '+43/34/5*2'

この問題を解決するにはどのような方法でもかまいませんが、ベクトル化されたブール値の方法が推奨されます。

この文字列でやりたいことは、str2num を実行して、エラーをスローせずに値を返すようにすることです。

ありがとう!

4

1 に答える 1

1

ここでは正規表現を使用できます。

myString = '/*+*43/*/+34/5*2/*';
myString = regexprep(myString,'^[/*]+','');   % accomplish the rule #1
myString = regexprep(myString,'[/*+-]+$','');   % accomplish the rule #2
myString = regexprep(myString,'[/*+-]{2,}','${$0(1)}')   % accomplish the rule #3
于 2016-09-25T13:53:55.220 に答える