Ruby: Occurrences of a Character in a String

Finding all occurrences of a particular character in a string in the Ruby programming language can be achieved in practically innumerable ways. You may want to choose your approach based on what you plan to do with the occurrences of these characters. In this tutorial, I will highlight ways to find all occurrences of a character in a string (not just the first one).

Three Ways to Find All Instances of a Character in a String of Ruby Code

1. Ruby’s built-in count method: allows you to count the number of times a character occurs in a string
2. The built-in scan method: allows you to see the characters themselves
3. The index method: allows you to retrieve the first location within a string where a character occurs

All three methods can be used to clean data for pre-processing, which is the application I had in mind when making this guide. The method you choose to use should depend on your string and your desired outcome. Whatever your goal, my hope is that I’ve got you covered with a description of each method and some source code.

Let’s get started!

Let’s use the following sample string:
“This is a Ruby tutorial!”

1. Count Approach

This returns the number of times a character occurs. In the example shown below, I first demonstrate how to find the number of times the letter “i” occurs in the string, “This is a Ruby tutorial.” The answer should be three, which you can quickly see by counting yourself. The code indeed returns the integer 3.

Keep in mind that this is case-sensitive. In the second example, we are explicitly telling Ruby that we want to count the number of times the letter “r” occurs in the same string. Intuitively, you would count two.

The letter “r” appears in the word “Ruby” and in the word “tutorial.” However, the code actually returns the integer 1. Why is this? This is because we asked for “r” and not “R”. In order to retrieve instances of both “r” and “R”, Ruby must be told explicitly that both cases are required (as shown in line 10 of the code snippet below). Alternatively, view this code on GitHub.

using the count method

2. Scan Approach

The second method, scan, differs in that instead of returning a count, it returns an array of the characters themselves. As in the above method, keep in mind that this scan is case-sensitive.

On line four of the code below, the string ‘i’ is used to search for instances of the letter “i”. Regex can also be used in place of a string. For example, line four could be replaced with string.scan(/i/). See below or view this code on GitHub.

using the scan method

3. Index Approach

Another method of finding the occurrence of a character in a string is by using Ruby’s index method. This allows you to find the location of the first occurrence. This can be helpful in cases where you want to do a replacement. As with scan and count, index is case-sensitive.

This method returns the position in the string. In the string, “This is a ruby tutorial,” if we wanted to find the index for the letter “i”, the code would return 2 as shown in the code below (view it on GitHub.)

the index approac

When to Use Each Method

We’ve covered Ruby’s built-in count method, scan method, and index method. When selecting a method, you’ll want to keep in mind what your end goal is with your code.

If you just want the number of times a character occurs, you’ll want to use the count method. If you want to return the characters you’re searching for, use the scan method. Finally, if you’re wanting to get the location of the found character (if you’re looking to do a replacement, for example), the index method is a perfect way to handle this.

For more information, please see RubyDocs or leave a comment below with any questions on how to implement this code. Let me know which method you’re going to use in your code in order to find the occurrences of a character in a string. I’d love to hear your feedback.

Leave a Comment