MATLAB是否具有字符串的条带功能?

时间:2015-07-31 08:51:55

标签: string matlab

是否有一个简单的函数 f ,以便

f(' hello, world! ' ) == 'hello, world!'

我可以使用正则表达式删除空格(或任何字符),但这似乎是对问题应用锤子。我想知道是否有一些我错过的简单。

3 个答案:

答案 0 :(得分:7)

无需使用锤子,只需使用strtrim

来自文档:

  

S = strtrim(str)返回带有所有前导和的字符串str的副本   删除了尾随空白字符。一个白色空间的角色是   isspace函数返回逻辑1(true)的那个。

答案 1 :(得分:5)

要删除字符串一侧的空格,请使用Dim cCont As Control For Each cCont In Me.Controls If TypeName(cCont) = "CheckBox" Then cCont.value = True End If Next cCont 命令。

答案 2 :(得分:1)

自Matlab版本2016b起,您可以使用内置的strip()函数。

对于那些没有更新的matlab版本的人,这里是我自定义的函数,当strCharacter作为strip()传入时,它也没有精确的一个char的限制

         function result = trim(s,varargin)
            % Merge multiple spaces to single space in the middle
            % remove trailing/leading spaces
            % trim(s [, how [,chars]])
            %     s: a string 
            %     how: a num 1=left only; 
            %                2=right only; 
            %                3=left and right; 
            %                4 (default)=left and right and merge middle
            %     chars: if not given (default), space
            %              if given, remove consecutive character instead
            % 

            if nargin == 1
                how = 4;
                chars = ' ';
            elseif nargin == 2
                how = varargin{1};
                chars = ' ';
            elseif nargin == 3
                how = varargin{1};
                chars = varargin{2};
            end % end if nargin

            if strcmp(chars,' '), chars='\s'; end

            if how==1
                expression = sprintf('^(%s)+',chars);
            elseif how==2
                expression = sprintf('(%s)+$',chars);
            elseif how==3
                expression = sprintf('^(%s)+|(%s)+$',chars,chars);
            elseif how==4
                expression = sprintf('(?<=[(%s)])(%s)*|^(%s)+|(%s)+$',chars,chars,chars,chars);
            end % end if how

            result = regexprep(s, expression, '');
        end