Compare a string against list of other strings

21 ビュー (過去 30 日間)
rkoz575
rkoz575 2022 年 4 月 1 日
コメント済み: ajay kumar 2022 年 7 月 6 日
Hello,
I would like to understand how to compare a user-inputted string against a list of other strings. I have some extremely verbose code that does work but I am convinced there must be a more elegant solution.
I paste example code below. I am trying to compare a "data rate" against some "permissible rates". Can anyone advise? Thank you.
clear; clc;
data_rate = '288'; % user input
permissible_rates = {'128';'256';'512'}; % validate input against this
check_rate = NaN(size(permissible_rates)); % set up empty array
% Go through the permissible rates, and see if the data rate string is the
% same of any of the permissible rates. If yes, output is 1. If no, output
% is 0
for i=1:length(permissible_rates)
check_rate(i)=strcmp(data_rate,permissible_rates{i});
end
% if there are no 1s in the array, the user input is invalid
if ismember(1,check_rate) ~= 1
error('You didn''t choose a correct data rate');
end
% otherwise continue
disp('You choose a correct data rate, congratulations')
  1 件のコメント
KSSV
KSSV 2022 年 4 月 1 日
Are you sure they are strings? Why they are strings? Happily you can have them as numbers right?

サインインしてコメントする。

回答 (1 件)

KSSV
KSSV 2022 年 4 月 1 日
data_rate = '288'; % user input
permissible_rates = {'128';'256';'512'}; % validate input against this
idx = contains(permissible_rates,data_rate)
idx = 3×1 logical array
0 0 0
  5 件のコメント
rkoz575
rkoz575 2022 年 4 月 4 日
Thank you Steven for the comprehensive answer. I should have realised that contains would fail in the case you mention (where 288 is somewhere in the text). "matches" is a better function to use!
If you submit this as an answer I will accept it.
ajay kumar
ajay kumar 2022 年 7 月 6 日
data_rate = '288';
someRates = {'2889','1288', '72883', '288'};
find(matches(someRates,data_rate))
ans = 4
It will give right index with idx

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by