compare parts of strings
85 次查看(过去 30 天)
显示 更早的评论
good morning, I want to know if there is a way to compare parts of strings in matlab.
For example: I want to find a string with 'dog':
A=['dog','cat','ball','hot-dog','god','dogged']
compared to
B=['dog']
should return:
[1,0,0,1,0,1]
In the same way, if I want to compare:
A=['red','green','yellow'] with
B=['greener', 'baseball', 'reddish'],
that should return either [1,1,0] or [1,0,1].
Just want to know if it is possible, because it seems quite impossible for my MATLAB skills.
Thanks
0 个评论
采纳的回答
Stephen23
2015-3-3
编辑:Stephen23
2015-3-4
In MATLAB the square brackets are not a list operator (as a lot of beginners think), but actually a concatenation operator , so your code:
['dog','cat','ball','hot-dog','god','dogged']
simply concatenates all of those strings to give
'dogcatballhot-doggoddogged'
which is probably not what you wanted. And
['dog']
does nothing at all, because there is nothing to concatenate.
>> A = {'dog','cat','ball','hot-dog','god','dogged'};
and 'dog' can simply be defined as a simple string like this
>> B = 'dog';
>> strfind(A,B)
ans =
[1] [] [] [5] [] [1]
which tell us the indices of where string B is found in each of the string in A. If you only need to know if the string exists in A then you can use cellfun on its output:
>> ~cellfun('isempty',strfind(A,B))
ans =
1 0 0 1 0 1
Likewise we can compare a cell array to see if there are any strings contained in the the strings of another cell array, although this is a little more code:
>> A = {'greener', 'baseball', 'reddish', 'mellow-yellow', 'greenspan'};
>> B = {'red', 'green', 'yellow'};
>> C = cellfun(@(s)strfind(A,s),B,'UniformOutput',false);
>> any(~cellfun('isempty',vertcat(C{:})),1)
ans =
1 0 1 1 1
You might also be interested in the matrix, which shows which substrings match between the two cell arrays (the rows=B, the columns=A):
>> ~cellfun('isempty',vertcat(C{:}))
ans =
0 0 1 0 0
1 0 0 0 1
0 0 0 1 0
Note that in all of these examples the code checks if the string/s in B exist in A.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!