How To Work with String Methods in Ruby


Ruby strings have numerous integral practices making it an easy task to alter and manipulate text, a task that is common numerous programs.

In this guide, you are going to utilize methods that are string determine the length of a string, index and split strings to extract substrings, add and remove whitespace and other characters, change the case of characters in strings, and find and replace text. When you’re done, you’ll be able to incorporate these methods into your programs that are own

Determining String Length

The sequence technique length comes back how many figures in a sequence. This technique pays to for when you really need to enforce minimal or password that is maximum, or even to truncate bigger strings become within particular restrictions to be used as abbreviations.

listed here is an illustration that prints along a phrase:

open_source = "Sammy contributes to open source."
printing open_source.length



Keep at heart that each character, including letters, figures, whitespace figures, and symbols, is likely to be counted, as it’s area of the sequence.

To determine if a sequence is empty, you can examine to see if its size is 0, or perhaps you may use the empty? technique:

name = ""
title.empty?    # real

title = "Sammy"
title.empty?    # false

title = "     "
title.empty?    # false

Let’s examine how exactly to we index strings and access a sequence’s articles.

Accessing Characters Within a String

To printing or use a few of the figures in a sequence, utilize the slice approach to obtain the component you want.

Like arrays, in which each element corresponds to an index quantity, all of a characters that are string’s match an index quantity, you start with the index quantity 0.

For the sequence Sammy the index breakdown seems like this:

The slice technique allows you to grab a character that is single a range of characters. Passing a integer that is single the smoothness at that index. Moving two integers, divided by a comma, informs slice to come back most of the figures through the index that is first the final index, comprehensive. The slice technique additionally takes a variety, including 1..4, to specify the figures to draw out:

"Sammy".slice(0)     # "s"
"Sammy".slice(1,2)   # "am"
"Sammy".slice(1..4)  # "ammy"

The [] syntax is an alias for slice, to treat strings like arrays:

"Sammy"[0]     # "s"
"Sammy"[1,2]   # "am"
"Sammy"[1..4]  # "ammy"

You also can access just one character through the end regarding the sequence with a index that is negative. -1 would allow you to access the final character regarding the sequence, -2 would access the second-to-last, and so forth.

Finally, it is possible to transform the sequence to a range of figures because of the chars technique:

"sammy".chars    # ["S", "a", "m", "m", "y"]

This can be handy for manipulating or changing the figures in sequence.

Next, let us examine how exactly to affect the situation regarding the figures in a sequence.

Converting to Upper and Lower Case

The upcase and downcase practices get back a sequence with all the current letters of an string that is original to upper- or lower-case letters. Any figures in sequence which are not letters will never be changed.

Let’s convert the sequence Sammy Shark become all top situation:

name = "Sammy Shark"
printing title.upcase



Now, let’s convert the sequence become all reduced situation:

print title.downcase


sammy shark

The upcase and downcase functions allow it to be simpler to assess and compare strings by simply making situation constant throughout. As an example, against a lowercase known value.( if you ask for a username and the user enters the username with a capital letter, you can lowercase the user’s input and compare it*************)

Ruby strings also provide a capitalize technique which comes back a string that is new the initial character capitalized:

"sammy".capitalize    # "Sammy"

This is a convenient technique, but be cautious the method that you make use of it; it just capitalizes the initial page you need.( so it might not always fit the use case*************)

Ruby additionally provides a swapcase technique which comes back a sequence because of the casing swapped:

text = "Sammy"
printing text.swapcase

The downcase, upcase, captalize and swapcase practices all get back a string that is new leave the existing string unaltered. This is important to remember if you’re doing something other than immediately printing out the text. Take a look at the esxample that is following*************)

text = "sammy"

printing "Hello, #{text}!"


hey, sammy!

Even we never captured the value returned by capitalize though we called capitalize on the text variable,. We would need to rewrite the scheduled system similar to this:

text = "sammy"
text = text.capitalize

printing "Hello, #{text}!"


Hi, Sammy!

You may use downcase!, upcase!, capitalize! and swapcase! to change the string that is original:

text = "sammy"
text = text.capitalize!

printing "Hello, #{text}!"

Be careful though. You can find drawbacks to mutating the string that is original. Ruby provides both methods so the one can be chosen by you that fits your preferences.

Now let us include and eliminate whitespace from strings.

Padding and Stripping Strings

If you are composing a course which has to format some text, you are going to usually discover that it’s also important to then add room facing, after, or about a sequence to make it make along with other information. Alongside times, you might want to eliminate characters that are unnecessary first or end of the strings, like additional whitespace or unique figures.

To surround a sequence with areas, utilize the center technique:

"Sammy",center(21)    # "        Sammy        "

You can specify a sequence while the 2nd argument should you want to utilize a character:( that is different*************)

" [Sammy] ".center(21, "<>")   # "<><><> [Sammy] <><><>"

The ljust and rjust practices add areas or figures left or side that is right of string and work just like the center technique:

"Sammy".ljust(20)         # "Sammy               "
"Sammy".rjust(20)         # "               Sammy"
"Sammy".rjust(20, "!")    # "!!!!!!!!!!!!!!!Sammy"

To eliminate spaces that are leading a string, use the rstrip method. To remove spaces that are trailing usage lstrip. Utilize strip to get rid of both leading and trailing areas:

"        Sammy".rstrip    # "Sammy"
"Sammy        ".lstrip    # "Sammy"
"      Sammy  ".strip     # "Sammy"

You may use the center!, ljust!, rjust!, lstrip!, rstrip!, and strip! ways to alter the string that is original

Sometimes you will have to eliminate figures through the end of a sequence. Ruby’s chop technique does exactly that; it eliminates the character that is last a string:

"Sammy".chop     # "Samm"

This is very helpful for eliminating the newline character (n) from strings:

"This string has a newlinen".chop

The chop technique renders the first sequence intact, coming back a string that is new. The chop! method modifies the string that is existing destination.

The chomp technique can eliminate characters that are multiple the conclusion of a sequence:

"Sammy".chomp("my")    # "Sam"

If that you don’t specify a sequence to get rid of, chomp will take away the newline:

"This string has a newlinen".chomp   # "This sequence has a newline

However, in the event that sequence does not include a newline character, chomp simply comes back the string:( that is original*************)

"Sammy".chomp     # "Sammy"

This makes chomp some safer to make use of whenever eliminating newlines compared to the chop technique, which constantly eliminates the character that is last

Ruby has a chomp! technique that mutates the string that is original comes back the modfied sequence if it performed an upgraded. But unlike chomp, the chomp! technique comes back nil if it don’t affect the sequence:

string = "Hellon"
string.chomp!     # "Hello"

sequence = "Hello"
string.chomp!     # nil

Next, let us examine how exactly to seek out text in strings.

Finding Characters and Text

Sometimes you’ll want to see whether or otherwise not a sequence contains another sequence.

The include? technique checks to see if a sequence contains another sequence. It comes back true in the event that sequence exists and false or even:

"Sammy".include?("a")   # real
"Sammy".include?("b")   # false

The index technique comes back the index of a character. It may also determine the index regarding the character that is first of substring. Also it comes back nil in the event that character or substring does not occur:

"Sammy".index("a")     #1
"Sammy".index("mm")    number 2
"Sammy".index("Fish")  # nil

The index technique just discovers the occurrance that is first. Listed here is an illustration with a lengthier sequence:

text = "Sammy has a balloon"
text.index("a")    #1

The sequence Sammy has a balloon has four occurrances regarding the page “a”. But index just discovered the occurrance that is first. You will need to compose one thing more certain to find among the other occurrances.

For instance, you might transform the sequence to a range of figures and make use of array ways to iterate through outcomes and choose the indices the character. Listed here is one strategy for doing that:

text = "Sammy has a balloon"
indices = text.chars
  .selectchar, index

printing indices
[1, 7, 10, 13]

each_with_index comes back a two-dimensional array containing the excellent entry for every character and its own index. select whittles it down seriously to simply the entries where in actuality the character is a, and map converts both array that is dimensional a one-dimensional selection of the indices.

In addition to wanting figures in a sequence, you can examine to see if a sequence begins with a character or substring utilising the start_with? technique:

text = "Sammy has a balloon"
text.start_with?("s")         # real
text.start_with?("Sammy has"  # real

The start_with? technique takes strings that are multiple comes back real if some of them match:

text = "Sammy has a balloon"
text.start_with?("Sammy the Shark", "Sammy") # real

In this instance, “Sammy the Shark” is not discovered, but “Sammy” is, and so the return value is true.

You may use the end_with? approach to see if a sequence concludes because of the offered substring. It really works just like start_with?:

text = "Sammy has a balloon"
text.end_with?("balloon")               # real
text.end_with?("boomerang")             # false
text.end_with?("boomerang", "balloon")  # real

We’ve looked over how to find text, therefore let us examine how exactly to change that text with various text.

Replacing Text in Strings

The find and exchange function in term processors allows you to seek out a sequence and change it with another sequence. You are able to do that in Ruby because of the sub and gsub practices.

The sub technique replaces element of a sequence with another.

Sammy no more has got the balloon; it travelled away. Let us replace the substring "has" to "had".

balloon = "Sammy has a balloon"
printing balloon.sub("has","had")

Our production will appear similar to this:


Sammy had a balloon.

The sub technique just replaces the initial occurrance regarding the match because of the text that is new. Let’s use a string that is modified has two occurrences regarding the term has:

balloon = "Sammy has a balloon. The balloon has a ribbon"
printing balloon.sub("has","had")


Sammy had a balloon. A ribbon is had by the balloon

Only the occurrance that is first.

To modification them, utilize the gsub technique, which does global replacement:

balloon = "Sammy has a balloon. The balloon has a ribbon"
printing balloon.gsub("has","had")


Sammy had a balloon. The balloon had a ribbon

The sub and gsub practices constantly get back brand new strings, making the originals unmodified. Let us show this by changing “balloon” to “boomerang” inside our sequence:

text = "Sammy has a balloon"
text.gsub("ballooon", "boomerang")
printing text


Sammy has a balloon

The production does not show the effect we are wanting, because we never assigned the result of gsub to a new variable while we did specify the substitution. To get the total outcome we would like, we’re able to rewrite this system similar to this:

text = "Sammy has a balloon"
text = text.sub("ballooon", "boomerang")
printing text

Alternatively, you need to use sub! alternatively, which modifies the string that is original. Let us test this by doing several sequence replacements. We will alter “red balloon” to “blue boomerang”:

text = "Sammy has a red balloon"
text.sub!("red", "blue")
text.sub!("balloon", "boomerang")
printing text


Sammy has a boomerang that is blue

You may use the gsub! approach to do a substitution that is global destination besides.

The sub and gsub practices accept regular expressions the search pattern. Let us change most of the vowels in sequence because of the @ expression:

"Sammy has a red balloon".gsub /[aeiou]/, "@"
"[email protected] [email protected] @ [email protected] [email protected]@@n"

The replacement value doesn’t always have become a sequence. You need to use a hash to specify exactly how characters that are individual pieces must be changed. Let us change all occurrances regarding the page a with @ and all sorts of the o figures with zeros:

"Sammy has a red balloon".gsub /[aeiou]/, {"a" => "@", "o" => "0"}
# "[email protected] [email protected] @ rd [email protected]"

You may use this to execute more substitutions that are complex less rule.


In this guide, you caused and strings that are manipulated some of the built-in methods for the string data type. You also learned that many of the methods for working with strings come in two variants: one that leaves the string unchanged, and one that modifies the string that is original. What type you utilize is determined by your preferences. Ruby provides you with the flexibleness to decide on the method that you wish to use your computer data. But composing rule that does not alter current information may be simpler to debug later on.

Be certain to examine these tutorials that are related carry on checking out how exactly to use information in Ruby:

Garmin Forerunner 645 Music review: The high cost of tunes on a runner’s device

Previous article

How exactly to Install Turtl Server Evernote Alternative on CentOS 7

Next article

You may also like


Leave a reply

Your email address will not be published. Required fields are marked *