Bird
Raised Fist0
MATLABdata~5 mins

String searching (contains, strfind) in MATLAB

Choose your learning style10 modes available
Introduction

We use string searching to find if a smaller piece of text is inside a bigger text. It helps us check or locate words or characters easily.

To check if a sentence contains a specific word.
To find the position of a word inside a paragraph.
To filter a list of names that include a certain substring.
To detect if a file name has a certain extension.
To search for keywords in user input.
Syntax
MATLAB
result = contains(str, pattern)
positions = strfind(str, pattern)

contains returns true or false if the pattern is found.

strfind returns the starting positions of the pattern in the string.

Examples
This checks if 'world' is inside 'hello world'. It returns true.
MATLAB
tf = contains('hello world', 'world')
This finds all positions of 'o' in the string. It returns [5 8].
MATLAB
pos = strfind('hello world', 'o')
This checks if 'python' is inside the string. It returns false.
MATLAB
tf = contains('MATLAB programming', 'python')
This finds where 'na' appears in 'banana'. It returns [3 5].
MATLAB
pos = strfind('banana', 'na')
Sample Program

This program checks if the word 'love' is in the sentence and prints the positions where it starts.

MATLAB
text = 'I love learning MATLAB';
word = 'love';

% Check if word is in text
found = contains(text, word);

% Find position of word in text
positions = strfind(text, word);

fprintf('Is the word "%s" found? %d\n', word, found);
fprintf('Starting position(s): ');
fprintf('%d ', positions);
fprintf('\n');
OutputSuccess
Important Notes

contains is case-sensitive by default but can be made case-insensitive with extra options.

strfind returns an empty array if the pattern is not found.

Use contains when you only need to know if the pattern exists.

Summary

Use contains to check if a string has a pattern (true/false).

Use strfind to get the exact positions of the pattern in the string.

Both help you find text inside other text easily.

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