Bird
Raised Fist0
MATLABdata~3 mins

Why String searching (contains, strfind) in MATLAB? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could find any word in a huge text instantly, without reading every letter?

The Scenario

Imagine you have a long list of sentences and you want to find which ones mention the word "error". Doing this by reading each sentence one by one is like searching for a needle in a haystack by hand.

The Problem

Manually scanning through text is slow and tiring. You might miss some matches or make mistakes. It's hard to keep track of where the word appears, especially if the text is very long or there are many sentences.

The Solution

String searching functions like contains and strfind in MATLAB quickly scan text and tell you if and where a word appears. They do the hard work instantly, so you don't have to waste time or risk errors.

Before vs After
✗ Before
for i = 1:length(sentences)
  if ~isempty(strfind(sentences{i}, 'error'))
    disp(['Found in sentence ' num2str(i)])
  end
end
✓ After
idx = contains(sentences, 'error');
disp(find(idx))
What It Enables

It lets you quickly find and work with specific words or patterns in text, making data analysis and text processing much easier and faster.

Real Life Example

Customer support teams can instantly find all emails mentioning "refund" to respond faster and improve service.

Key Takeaways

Manually searching text is slow and error-prone.

contains and strfind automate finding words or patterns.

This saves time and reduces mistakes in text analysis.

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