2016-09-25 35 views
0

Matlabでルールベースの文字列編集機能を開発しようとしています。Matlabのルールに基づいて文字列を選択的に編集する

私は、次のような文字列生成されているとします

  1. 文字列をして起動することはできません。さらに、私は一連のルールに従って、特定の数学演算子を削除することが想定

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

    を'*'または '/'演算子

  2. 文字列は演算子で終わることはできません
  3. すべての順次演算子はそのシーケンス内の最初の演算子に置き換えられます電子それは例えば上記の文字列がに減少するであろうので、1と2

に違反しない限り:

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

任意の方法をこの問題を解決するための罰金ですが、ベクトル化ブール方法が好ましいであろう。

この文字列で何をしたいのですか?str2numを実行して値を返し、エラーをスローしないようにします。

ありがとうございます!

+0

正規表現は、おそらく探索するための良い道でしょう。 – excaza

答えて

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 
+0

ありがとうございました! それはエレガントです。 whileループと空集合の置換えを使った、かなりハックの方法でexcazaが提案する正規表現を使用しようとしていましたが、これははるかに単純です。 正規表現で学ぶべきことがたくさんあるようですね! –

関連する問題