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 回答