【问题标题】:MATLAB regular expression denied to remove spaces at beginning of a stringMATLAB 正则表达式拒绝删除字符串开头的空格
【发布时间】:2015-11-12 13:20:18
【问题描述】:

假设我们在 MATLAB 中有这个字符串:

mm = ['  44412 (25.01%)'];

我只想删除这个字符串中的第一个空格来得到这个输出:

'44412 (25.01%)'

我正在使用strrep(mm,'\^\s\s',''),但没有用。有什么问题?

【问题讨论】:

  • 我还没有看过正则表达式,但如果你不关心尾随空格,另一个可能的选择是strtrim。或者strjust

标签: regex string matlab str-replace


【解决方案1】:

strrep 的问题在于它不允许您使用regex 模式。过滤器的第一部分 ('\^') 也尝试显式匹配 ^,因此它不适用于您的字符串。如果您删除前导 \,您的过滤器可以正常使用 regexprep,但仅限于具有正好 2 个前导空格的字符串。

尝试使用这个更通用的过滤器来代替regexprep

str = '  44412 (25.01%)';
newstr = regexprep(str, '^\s+', '');

返回:

newstr =

44412 (25.01%)

我在这里所做的是匹配字符串开头的 1 个或多个空格字符。这种语法还允许我们在没有任何前导空格的字符串上使用它,并且不对其进行任何修改。


编辑:这里有一些内置的替代品!

您可以使用strtrim,但它会去除前导尾随空格:

newstr = strtrim(str);

您也可以使用strjust 左对齐您的字符串:

newstr = strjust(str, 'left');

如果你想真正有创意,你可以flip 你的数组并使用deblank,它会去除尾随空格:

newstr = fliplr(deblank(fliplr(str)));

【讨论】:

    猜你喜欢
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多