String Searching with contains and strfind in MATLAB
📖 Scenario: You work in a library and need to find books that mention certain keywords in their titles.
🎯 Goal: Build a MATLAB program that searches for a keyword in a list of book titles using contains and strfind.
📋 What You'll Learn
Create a cell array of book titles
Create a keyword variable to search for
Use contains to find which titles include the keyword
Use strfind to find the position of the keyword in each title
Display the results clearly
💡 Why This Matters
🌍 Real World
Searching for keywords in book titles helps librarians quickly find relevant books for readers.
💼 Career
Knowing how to search strings is useful in data analysis, text processing, and software development.
Progress0 / 4 steps
1
Create a list of book titles
Create a cell array called bookTitles with these exact strings: 'Matlab Basics', 'Advanced Programming', 'Data Science', 'Machine Learning', and 'Deep Learning'.
MATLAB
Hint
Use curly braces {} to create a cell array of strings in MATLAB.
2
Set the keyword to search
Create a variable called keyword and set it to the string 'Learning'.
MATLAB
Hint
Assign the string 'Learning' to the variable keyword.
3
Find titles containing the keyword using contains and strfind
Use contains with bookTitles and keyword to create a logical array called hasKeyword. Then use a for loop with index i from 1 to length of bookTitles to find the position of keyword in each title using strfind. Store the result in a cell array called positions.
MATLAB
Hint
contains returns a logical array. Use strfind inside a loop to get positions.
4
Display the search results
Use a for loop with index i from 1 to length of bookTitles to print each title. If hasKeyword(i) is true, print 'Found at position(s):' followed by the positions from positions{i}. Otherwise, print 'Keyword not found'.
MATLAB
Hint
Use fprintf to print each title and the search results. Use mat2str to convert positions to string.
Practice
(1/5)
1. Which MATLAB function returns a logical true or false indicating if a substring exists within a string?
easy
A. contains
B. strfind
C. findstr
D. substring
Solution
Step 1: Understand the purpose of contains
contains returns true or false if a substring is found inside a string.
Step 2: Compare with strfind
strfind returns positions, not logical true/false.
Final Answer:
contains -> Option A
Quick Check:
Logical check for substring = contains [OK]
Hint: Use contains for true/false substring check [OK]
Common Mistakes:
Confusing strfind with contains
Thinking strfind returns true/false
Using findstr which is outdated
2. Which of the following is the correct syntax to find the starting indices of substring 'cat' in string str = 'concatenate' using strfind?
easy
A. contains(str, 'cat')
B. strfind('cat', str)
C. strfind(str, 'cat')
D. strfind(str, cat)
Solution
Step 1: Recall strfind syntax
The first argument is the main string, second is the substring to find.