Bird
Raised Fist0
MATLABdata~10 mins

String searching (contains, strfind) in MATLAB - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - String searching (contains, strfind)
Start with string S
↓
Search for substring sub
↓
Return indices of sub
↓
End
The program starts with a main string and a substring to find. It checks if the substring exists inside the main string. If yes, it returns the positions; if no, it returns empty.
Execution Sample
MATLAB
S = 'hello world';
sub = 'lo';
idx = strfind(S, sub);
found = contains(S, sub);
This code searches for 'lo' inside 'hello world' using strfind and contains.
Execution Table
StepVariableValueActionResult
1S'hello world'Initialize main string'hello world'
2sub'lo'Initialize substring to find'lo'
3idx[4]Call strfind(S, sub)Returns [4] because 'lo' starts at position 4
4foundtrueCall contains(S, sub)Returns true because 'lo' is in S
5foundtrueAssign contains result to foundfound = true
💡 Search complete: strfind found index 4, contains returned true
Variable Tracker
VariableStartAfter strfindAfter containsFinal
S'hello world''hello world''hello world''hello world'
sub'lo''lo''lo''lo'
idx[][4][4][4]
foundfalsefalsetruetrue
Key Moments - 2 Insights
Why does strfind return [4] but contains returns true?
strfind returns the starting index of the substring in the main string (4 means 'lo' starts at position 4). contains returns a logical true/false if the substring exists anywhere. See execution_table rows 3 and 4.
What happens if the substring is not found?
strfind returns an empty array [], and contains returns false. This is shown by the exit_note and would be reflected in idx and found variables.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of idx after step 3?
A[4]
B[]
C[1]
Dtrue
💡 Hint
Check the 'Value' column for idx at step 3 in the execution_table.
At which step does the variable 'found' become true?
AStep 2
BStep 5
CStep 4
DStep 3
💡 Hint
Look at the 'found' variable changes in execution_table rows 4 and 5.
If sub = 'xyz' (not in S), what would strfind return?
A[4]
B[1]
C[]
Dtrue
💡 Hint
Recall from key_moments that strfind returns empty array if substring not found.
Concept Snapshot
String searching in MATLAB:
- Use strfind(S, sub) to get indices where sub starts in S
- Use contains(S, sub) to get true/false if sub is in S
- strfind returns empty [] if not found
- contains returns false if not found
- Both help find substrings inside strings
Full Transcript
This visual execution shows how MATLAB searches for a substring inside a string using strfind and contains. We start with a main string S and a substring sub. strfind returns the starting index of sub in S or empty if not found. contains returns true if sub is anywhere in S, otherwise false. The execution table traces variable values step-by-step. Key moments clarify why strfind returns indices and contains returns logical values. The quiz tests understanding of these steps.

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

  1. Step 1: Understand the purpose of contains

    contains returns true or false if a substring is found inside a string.
  2. Step 2: Compare with strfind

    strfind returns positions, not logical true/false.
  3. Final Answer:

    contains -> Option A
  4. 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

  1. Step 1: Recall strfind syntax

    The first argument is the main string, second is the substring to find.
  2. Step 2: Check each option

    strfind(str, 'cat') correctly uses strfind(str, 'cat'). strfind('cat', str) reverses arguments. contains(str, 'cat') uses contains, not strfind. strfind(str, cat) misses quotes around 'cat'.
  3. Final Answer:

    strfind(str, 'cat') -> Option C
  4. Quick Check:

    strfind(mainString, substring) = strfind(str, 'cat') [OK]
Hint: First argument main string, second substring in strfind [OK]
Common Mistakes:
  • Swapping arguments in strfind
  • Forgetting quotes around substring
  • Using contains instead of strfind for indices
3. What is the output of the following MATLAB code?
str = 'abracadabra';
pos = strfind(str, 'ra');
disp(pos);
medium
A. [3 10]
B. [2 9]
C. [4 11]
D. []

Solution

  1. Step 1: Identify substring positions in 'abracadabra'

    Look for 'ra' in the string: 'abracadabra'. The substring 'ra' starts at index 3 and 10.
  2. Step 2: Confirm output of strfind

    strfind returns starting indices of matches, so output is [3 10].
  3. Final Answer:

    [3 10] -> Option A
  4. Quick Check:

    Positions of 'ra' = [3 10] [OK]
Hint: Count string indices carefully for strfind output [OK]
Common Mistakes:
  • Counting indices starting at 0 instead of 1
  • Confusing substring length with position
  • Expecting logical output instead of indices
4. Identify the error in this MATLAB code snippet:
str = 'hello world';
pos = strfind('world', str);
disp(pos);
medium
A. disp cannot display arrays
B. Arguments of strfind are reversed
C. strfind cannot search for 'world'
D. Missing semicolon after strfind

Solution

  1. Step 1: Check strfind argument order

    strfind expects the main string first, then the substring. Here, arguments are reversed.
  2. Step 2: Understand impact of reversed arguments

    Searching 'world' inside 'hello world' is correct, but reversed arguments cause wrong or empty output.
  3. Final Answer:

    Arguments of strfind are reversed -> Option B
  4. Quick Check:

    strfind(mainString, substring) correct order [OK]
Hint: Main string first, substring second in strfind [OK]
Common Mistakes:
  • Swapping arguments in strfind
  • Assuming disp can't show arrays
  • Thinking semicolon is mandatory for correctness
5. You want to find all positions of the substring 'ana' in str = 'banana bandana' and check if it exists. Which code correctly does this?
hard
A. positions = strfind('ana', str); exists = contains('ana', str);
B. positions = contains(str, 'ana'); exists = strfind(str, 'ana');
C. positions = find(str, 'ana'); exists = contains(str, 'ana');
D. positions = strfind(str, 'ana'); exists = contains(str, 'ana');

Solution

  1. Step 1: Use strfind to get positions

    strfind(str, 'ana') returns all starting indices of 'ana' in the string.
  2. Step 2: Use contains to check existence

    contains(str, 'ana') returns true if 'ana' is found anywhere in str.
  3. Step 3: Verify options

    positions = strfind(str, 'ana'); exists = contains(str, 'ana'); correctly uses both functions. positions = contains(str, 'ana'); exists = strfind(str, 'ana'); swaps roles. positions = strfind('ana', str); exists = contains('ana', str); reverses arguments. positions = find(str, 'ana'); exists = contains(str, 'ana'); uses invalid function find for strings.
  4. Final Answer:

    positions = strfind(str, 'ana'); exists = contains(str, 'ana'); -> Option D
  5. Quick Check:

    Positions with strfind, existence with contains [OK]
Hint: Use strfind for positions, contains for true/false [OK]
Common Mistakes:
  • Swapping arguments in strfind or contains
  • Using find instead of strfind
  • Confusing output types of contains and strfind
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard