我正在使用像这样的开关语句
input('Enter string:') % For example 'VALUE'
switch string
case {'Value','VALue'.....}
适用于大写和小写的所有组合。
如何在switch表达式中更有效地编写不区分大小写的测试?
答案 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
输出用作选择器,并通过不进行任何案例测试来加速/简化代码。