2016-09-25 79 views
0

我想在Matlab中開發基於規則的字符串編輯功能。基於Matlab中的規則有選擇地編輯字符串

想我已經生成像繩子以下:

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

此外,假設我希望能按照一套規則來刪除某些數學運算符:

  1. 的字符串不能與啓動'*'或'/'運算符
  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

謝謝! 這是優雅的。 我試圖使用正則表達式在excaza中使用while循環和空集替換的方法,但這更簡單。 似乎有很多要學習正則表達式! –