MATLAB正则表达式拒绝删除字符串开头的空格。

3
假设我们在MATLAB中有这个字符串:
mm = ['  44412 (25.01%)'];

我想要删除这个字符串中的第一个空格,以获得以下输出:
'44412 (25.01%)'

我正在使用strrep(mm,'\^\s\s',''),但它没有起作用。问题出在哪里?

2
我还没有看正则表达式,但另一个潜在的选项是 strtrim,如果你不关心尾部空白。或者也可以使用 strjust - sco1
1个回答

5

strrep存在的问题是它不允许您使用regex模式。您过滤器的第一部分('\^')也尝试显式匹配^,因此它在您的字符串上无法正常工作。如果您删除前导\,则您的过滤器可以与regexprep正常工作,但仅限于具有完全相同的两个前导空格的字符串。

尝试改用这个更通用的过滤器,而不是使用regexprep

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

这将返回:

newstr =

44412 (25.01%)

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

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

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

newstr = strtrim(str);

你也可以使用 strjust函数来左对齐你的字符串:
newstr = strjust(str, 'left');

如果你想要非常有创意,你可以翻转数组并使用deblank,它可以去除尾部空格:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接