切换案例:如何在matlab中进行不区分大小写的字符串检查

时间:2017-07-25 06:43:47

标签: matlab switch-statement case-sensitive

我正在使用像这样的开关语句

input('Enter string:') % For example 'VALUE'
switch string
     case {'Value','VALue'.....} 

适用于大写和小写的所有组合。

如何在switch表达式中更有效地编写不区分大小写的测试?

2 个答案:

答案 0 :(得分:3)

您可以使用lower()将这两个值转换为小写,然后比较它,例如:

txt = 'Hello, World.';
newTxt = lower(txt);  % newTxt = 'hello, world.'

case {'hello, world.'}

您可以在官方文档中了解有关它的更多信息:https://www.mathworks.com/help/matlab/ref/lower.html

答案 1 :(得分:0)

您可以在MATLAB中使用 strcmpi 进行不区分大小写的比较,但是您需要使用if语句而不是切换...

% If you must use the 's' flag for input, it is directly stored as a string
% so you don't have to input the quotation marks!
str = input('Enter string', 's'); 

if strcmpi(str, 'VALUE')
    % true for 'VAlue', 'VALUe', 'valUE', ...
elseif strcmpi(str, 'anothervalue')
    % true for 'AnotherValue', 'ANOTHERvalue', ...
else
    % Anything else
end

您实际上可以在单元格数组上使用strcmpi,因此您根本不需要if语句(具体取决于您的用途)。

% Define your test strings
mystrings = {'abc', 'def', 'ghi', 'jkl'};
% Set text (could do via input)
str = 'def';
% Compare ALL 
choice = strcmpi(str, mystrings);
>> choice = [0 1 0 0] % logical vector output

因此,如果您构建代码以在矩阵或单元格中进行相关操作,那么您可以将此choice输出用作选择器,并通过不进行任何案例测试来加速/简化代码。