String array and Numeric values

1 view (last 30 days)
Ahmad
Ahmad on 12 May 2011
Hi,,
I have a String array that contains Names, I want to allow the user to choose a Name to change either by writing the name as a string OR by writing it's index as a number..
So I wrote this code, but it seems faulty.. Can anyone help with this..
Thanks in advance:
clear all
clc
Nums=[1:5]
%NumsStr=num2str(Nums)
for i=1:5
s=input('s= ','s')
s=strtrim(s);
S{i}=(s);
clc
end
S
for i=1:5
tst=input('edit what ','s')
try
res=strmatch(tst,S,'exact')
if((length(res)~=0) && (length(res)<2))
S{res(1)}=input('TEXT_MODE, New String =','s')
else
%NumRes=strmatch(tst,num2str(Nums))
NumRes=find(Nums==tst)
if((length(NumRes)~=0) && (length(NumRes)<2))
S{NumRes(1)}=input('NUMBER_MODE, New String = ','s')
end
end
catch ME
end
end

Accepted Answer

Laura Proctor
Laura Proctor on 12 May 2011
In your original code, you should change the line after the else statement to:
NumRes=find(Nums==str2num(tst))
  1 Comment
Ahmad
Ahmad on 12 May 2011
I believe this solved the problem.
So many thanks.

Sign in to comment.

More Answers (1)

Matt Fig
Matt Fig on 12 May 2011
% Say your String cell looks like this:
S = {'Ted' 'Jim' 'Nancy'}
% To change by name:
cname = 'ted'; % User wants to change 'Ted'...
cname_new = 'Frank'; % to 'Frank'.
idx = strcmpi(S,cname); % Find 'Ted'
if any(idx)
S{idx} = cname_new; % Change to 'Frank'
end
Now to use an index instead of a name, just let the user enter cname_new and idx.
%
%
EDIT In response to your comment:
for ii =1:5
s = input('s= ','s');
S{ii}=strtrim(s);
clc
end
S
for ii = 1:5
tst = input('Edit what string in array? ','s');
idx = strcmpi(S,tst);
if any(idx)
T = input('TEXT_MODE, Enter New String: ','s');
S{idx} = T;
else
idx = str2double(tst);
if ~isnan(idx)
T = input('NUMERIC_MODE, Enter New String: ','s');
S{idx} = T;
end
end
end
S
  3 Comments
Ahmad
Ahmad on 12 May 2011
Particularly I didn't understand the index related part.
SO MANY Thanks Sir.
Ahmad
Ahmad on 12 May 2011
Thank you very much Sir.
I was hoping that you in particular will find and answer my question.
Thanks again.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!