Can I use logical indexing to find how many times a character is in a string?
11 次查看(过去 30 天)
显示 更早的评论
Hi,
I was working on a problem in this MOOC course where I had to count the number of times a character was present in a text file.
While solving the problem, I used a while loop to read each line and just added the length of the array(after using strfind)
like so:
line = fgets(fid);
sum=0;
while ischar(line)
found_in_line = length(strfind(line,character));
sum = sum + found_in_line;
line=fgets(fid);
end
But I tried to just make a sum of a logical array using logical indexing
Like so:
found_in_line = sum(contains(line,character));
But what contains does is just return true if its found in the entire string, I even tried using contains(line(1:end),character)) but this also returns only one logical answer.
Is there a method that I am not aware of which can create a logical array of a character found in a String??
Thank you!
0 个评论
采纳的回答
Stephen23
2021-2-2
编辑:Stephen23
2021-2-2
You can perform logical comparisons on a character array (they are not very different from numeric arrays):
str = 'some random text';
nnz(str=='o') % how many 'o' characters
Knowing how to work with arrays is a very powerful approach to using MATLAB.
2 个评论
Stephen23
2021-2-2
Strings are a container array which have character arrays inside. Hence if you want to deal with individual characters, you need to process the character arrays.
更多回答(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!