我使用switch語句像這樣開關箱:如何做不區分大小寫字符串檢查在MATLAB
input('Enter string:') % For example 'VALUE'
switch string
case {'Value','VALue'.....}
爲大寫和小寫的所有組合。
如何更有效地在開關表達式中寫入不區分大小寫的測試?
我使用switch語句像這樣開關箱:如何做不區分大小寫字符串檢查在MATLAB
input('Enter string:') % For example 'VALUE'
switch string
case {'Value','VALue'.....}
爲大寫和小寫的所有組合。
如何更有效地在開關表達式中寫入不區分大小寫的測試?
你可以改變這兩個值使用lower()
爲小寫,然後進行比較,例如像:
txt = 'Hello, World.';
newTxt = lower(txt); % newTxt = 'hello, world.'
case {'hello, world.'}
您可以瞭解更多關於它的官方文檔中:https://www.mathworks.com/help/matlab/ref/lower.html
您可以使用strcmpi
在MATLAB中不區分大小寫的比較,但您希望使用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
輸出作爲選擇,加快/由沒有做任何測試的情況下,簡化您的代碼。