find a string in a character array
Show older comments
A is an m x n character array (I think that is the right term. It says m x n char in the workspace under value).
I want to find a certain row depending on the characters. So say I have a string s of size 1 x n. I want something like this:
find(strcmp(s,A(1:m,:)))
I messed around with ismember instead of strcmp a little too. Can't get it right. I only want it to return an indicator if the row matches the string s.
help is appreciated. Thanks.
Accepted Answer
More Answers (2)
Jonathan
on 29 Jan 2019
The answer by Loginatorist was incorrect for my problem that is I believe the same as described by the OP. Below is an example of when the solution gives wrong results:
Occupations = ['educator ';'doctor '];
all(ismember(Occupations,'doctor '),2)
all(ismember(Occupations,'educator '),2)
Output:
ans =
5×1 logical array
0
1
ans =
5×1 logical array
1
1
Clearly, the second match is wrong, as doctor contains all the characters contained within educator.
A solution that fixes this is to use cellstr and strcomp:
OccupationsCell = cellstr(Occupations);
strcmp('doctor',OccupationsCell)
strcmp('educator',OccupationsCell)
Output:
ans =
2×1 logical array
0
1
ans =
2×1 logical array
1
0
1 Comment
Stephen23
on 29 Jan 2019
Other options: use the 'rows' option:
>> Occupations = ['educator ';'doctor '];
>> ismember(Occupations,'doctor ','rows')
ans =
0
1
Use a cell array:
>> ismember(cellstr(Occupations),'doctor')
ans =
0
1
Edward Umpfenbach
on 13 Sep 2012
0 votes
Categories
Find more on Cell Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!