Sign In | Subscribe
Start learning today, and be successful in your academic & professional career. Start Today!
Loading video...
This is a quick preview of the lesson. For full access, please Log In or Sign up.
For more information, please see full course syllabus of Introduction to Ruby
  • Discussion

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Bookmark and Share

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Sign up for

Membership Overview

  • Unlimited access to our entire library of courses.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lesson files for programming and software training practice.
  • Track your course viewing progress.
  • Download lecture slides for taking notes.
  • Learn at your own pace... anytime, anywhere!


  • Strings are a sequence of one or more characters representing human language
  • A string object holds and manipulates an arbitrary sequence of bytes, typically characters
  • You will often work with manipulating strings so it's important to understand the basic methods to update, delete, and insert characters in a string
  • The square brackets or [] can be used to find tokens, retrieve characters, retrieve substrings, and even match regular expressions
  • chop or chomp method allow you to remove characters at the end of the string
  • The gsub method allows you to match regular expression patterns and replace it with a string
  • The split method will divide a string into substrings using a delimiter and return them as an array of substrings.
  • upcase will replace all lowercase letters with uppercase counterparts while downcase will do the reverse.


Lecture Slides are screen-captured images of important points in the lecture. Students can download and print out these lecture slide images to do practice problems as well as take notes while watching the lecture.

  • Intro 0:00
  • Strings 0:08
    • Why do you want to get familiar with strings?
  • String Creation 1:16
    • new
    • empty?
    • length or size
    • Example
  • String Manipulation 4:40
    • slice
    • square brackets [ ]
    • token
    • [fixnum]
    • offset and length
    • chaining
  • String Insertion 12:56
    • insert
    • positive or negative index
  • String Updates 15:24
    • [token]
    • Examples
    • chop or chop!
    • chomp!
    • gsub
  • String Deletion 21:38
    • delete
  • String Reversal 22:46
    • reverse
  • String Manipulation 23:16
    • split(pattern=$, limit)
    • pattern
    • limit
    • upcase or upcase!
    • downcase or downcase!
    • swapcase
  • Incrementing Strings 27:26
    • next or next!
  • Check Out the Other Lessons 28:00
    • Ruby Data Types Part 1
    • Regular Expressions

Transcription: Strings

Welcome back to

Today's course is on strings.0001

What are strings? They are a sequence of one or more characters representing human language.0007

A string object holds and manipulates an arbitrary sequence of bytes, typically characters.0022

You can think of a string as not essentially holding just a single character; these bytes could be a Unicode format that uses a different size; that is why...think of it as a sequence of bytes.0034

Why do you want to get familiar with strings? You will work with strings often in your development, especially in programming, and manipulating strings should be your top priority.0057

The first thing we are going to talk about is string creation.0074

There is the constructor new; we have gone through it in an earlier lesson, but let's do a quick review.0077

We have this method new; it's part of the string object; it will create a new string object.0087

It's very simple: you call, and it will make this double-quoted string.0094

It will save that...I mean, it will substantiate that into the string as an object reference.0101

The next thing we're looking at is this empty method.0108

This returns true if a string path has a length of 0.0111

Here we have the string.empty?; because there are no digits in here--it's a length of zero--it returns true.0117

The next two methods we are looking at are length and size.0129

Both of them do the exact same thing; they are just different ways to say it.0135

I have a string.size and a string.length, but both of them, for our case with the string, equals, quote, quote...has a size of zero.0140

It returns an integer that indicates how many characters are in it.0158

If I have two characters in it, like...I'll show you...a, b...when I call string.size on this, this would be 2.0166

A,b,c...this would return 3.0184

Let's look at some examples.0190

I call here, and here is my new string.0193

I'm using the constructor method here.0202

If I call the .empty?, it's going to return false, because it does have characters in here; it is not a size of 0, so it's not equal to zero.0206

You can call string.size, too; it has a size of 21 characters in here.0225

Another way you can create your string is through the Kernel method.0232

We went through it before: again, you just call, with a capital S, String, and in parentheses, you put in your string to create.0239

This will create the same string object that we did with the constructor.0251

Another way is probably the most basic, the easiest...the most popular way you will do it, too: it's with the assignment operator.0258

Here it is: string=" and string=', and here is my new string.0268

The next thing we're going to look at is string manipulation.0278

There are a lot of different methods to manipulate strings; let's try to get to the most popular ones, the ones you will be using.0283

The first one we are looking at is the method slice; it also can be called with the square brackets here.0292

It might be hard to see on your screen, but these are square brackets.0303

So, this looks like this...0314

These square brackets allow you to do a lot of different things, depending on what type of object you pass in it and how many arguments you pass.0320

It will allow you to do a lot of different string manipulations.0329

The first one we are going to look at is finding tokens.0334

Here, you use the square brackets, and you put in a token value.0339

For our case, we're going to use a string as our token, so we're going to look for words in it.0346

First, it will return nil if that token can't be found.0355

But, it will return the token if it does find it.0363

First, I have a string: it has a quote, "A fool thinks himself to be wise, but a wise man knows himself to be a fool."0368

My token is 'fool'; it's going to return that token once it sees it one time.0376

So, when I call this string equals [fool]--here is my token--it's going to find it at the beginning here, and so it's going to return.0382

There you go: we found our needle in our haystack--our word in our sentence.0404

The next thing we're going to look at is getting characters.0411

To do this, you just use square brackets again, and this time we are passing a Fixnum object.0417

What this will do is, it will return the character for the Fixnum.0426

Fixnum is an indexed value, so I would pass in, for a string, what index I want to pass in these square brackets, and it will return me the character in that string for it.0432

For our example here, we have string="abcdef".0449

If we do the index, a is 0, b is 1, c is 2, d is 3, e is 4, and, of course, f is 5.0457

I have my value 4 here; that is my indexed value.0472

So, if I pass the index value, it's going to return me e, which is the fourth value here.0486

When I call string.slice for it, it also returns me e.0497

Remember, slice is the equivalent of the square brackets there.0503

Anything you pass in those square brackets, you can use slice and pass in the same arguments.0512

The next thing we're going to look at is finding substrings.0521

To do this, you pass two arguments.0524

Let's need two arguments...what you are going to pass here is the offset and length.0531

First, offset and length are Fixnum objects, Integers, so don't try to get tricky here.0547

This returns a substring using that offset and that length.0561

Let's go through an example here.0568

Again, we use the same sentence, but what I want to do here is return this last portion, because it's an interesting line.0570

I'm not returning that period, or the comma, or 'but a', just that phrase.0588

If I were to take the offset, 40 would be where it starts here.0596

And then the length of 35--35 is the actual size from where it starts, here, to where it ends, here.0607

That is a total of 35 characters.0620

Now, for starts from that offset, you go 35 characters in, and then when I call it using the string with the square brackets, it's going to return to me that substring.0633

Not only can you do substrings with the offset and length; you can also use a range to get it.0663

Well, it looks like a range; it's actually this begin index..end index.0672

It has the same syntax; what this does is, it retrieves the substring, using a range, from the begin index to end index.0681

Make sure you use those two dots there.0694

If you wanted to do three dots, you know it chops off the last one.0698

Again, we use the same sentence, but Ruby is giving us the flexibility to say, "Hey, you know, not only can you get the substring this way; you can do it this way, too--whatever works best for you."0703

For this case, the beginning index starts at 40, but if I go through all these characters--41, 42, 43,...all the way down here, the l is at the 74th indexed value.0718

So, when I call this square brackets, it's going to return me that exact same phrase that we looked at on the last slide.0739

Also, that phrase itself doesn't look that good without the first letter being capitalized, so there is a method called .capitalize, and that will uppercase the first letter of the string.0753

The next thing we're looking at is the string insertion.0772

This is an insert method, and it takes two arguments: it takes an index and a string.0778

That string is typically your double your string in there.0789

Of course, you can store that in the object reference and pass that in, too.0795

What this method does is, it allows you to enter the string at a given index.0800

This index can be positive, to start at the beginning index, or negative, to start at the last index.0807

I have two examples: one using the positive index, and the negative index.0818

Here is the positive index.0825

Over here, I have abcdef; it does an insert to the beginning of the string, so the 0 is going to be this letter a.0835

It says, "I'm going to insert this string into you."0849

Notice that our new string is put in the front position--the 0 position.0853

There is our string that we started with.0870

At the same time, I can use a negative index to put it in the back.0875

This just makes it easier, so I don't have to count through the whole string set; I can just say, "Hey, if I want to pass it to the back, I can just call it -1."0886

See here, we have our string "abcdef", and it passes 123456 at the end, which correlates with -1 here.0898

Remember, if you keep going through the negative index...this is -2, -3, -4, -5, can go all the way to the front, -6.0911

The next thing we're going to look at is string updates.0925

This allows you to change part of a string.0929

In this case, we continue using our square brackets with the token, but you can also set equal and put the value you want it to replace it with.0934

This will replace the token with the new string.0948

Replace with new token...0958

Here I have a string--it says, "King Henry III, the ruler of all the ocean lands."0961

First, I'm replacing III with IV, and then I'm changing ocean to desert.0969

Now, after I do these two changes--it's going to change this and this--when I call string, it's going to have it already updated to itself.0975

It has "IV" and "the ruler of all the desert lands."0989

Again, we can use the range and update it with a new token, also.1000

To do this update, you have a start index and an end index.1011

What you do is, you put the token you want to replace it with.1017

Here we have a string, "Phoenix is an excellent city."1024

0 through 6--you start at 0, through 6, and what it's going to do now is, we take this substring and we say, "We want to replace it with this text."1028

And it doesn't have to be the same size, remember: look, "Los Angeles" has many more characters, and it will actually remove this and put this in its place.1042

At the bottom, you have the end result after printing out the string.1057

The next thing we're going to look at is the chop, and the chop! method that works on itself.1067

This one will actually return on itself.1075

This returns the string with the last character removed.1080

This becomes useful if you're working with files, you're parsing different things, and you get new lines, carriage returns, and tabs--things you don't want.1085

Here is my sentence, and notice, at the end I have this ugly carriage return.1096

Instead, I can just call this .chop, and it's going to remove it.1104

Remember, this chop method is actually going to create a new object with that last character removed.1109

You can also use the self one, and then if you call sentence on the next line, you will see it actually removed in your existing object.1117

The next method we're looking at is the chomp, or the chomp! that calls itself, too.1130

The chomp takes one argument, but it's not required, so here what I would do will return the string with the given record separator removed from the end of the string.1140

Now, if the separator is not specified, it will remove by default the new line and the carriage return.1156

Here is our example; in this example, we're actually passing an argument in.1165

I have abc123, and like I say here, I want to chomp that 123, so the end result of the string is abc.1171

Remember, I could pass anything into chomp--so if I pass 1 in there, it would have removed 1.1183

This would have been .chomp, and if I passed 1 in there, I would get abc23.1190

The next method we're looking at is gsub.1205

This is a very powerful method; this allows you to take a string, pass in a pattern, and then you can also pass in what you're going to replace it with.1209

It doesn't just have to be a string that I'm passing; I can use regular expressions in here--so it's really powerful.1220

This gsub method takes two arguments: a pattern and a replacement.1228

The pattern can be a substring or a regular expression.1234

We're going to go over regular expression in another lesson, so we definitely want to look at that.1239

This replaces a pattern with a replacement string.1244

For my example here, "I like sunny weather." I have this gsub method, and this is actually a regular expression.1250

It's a very simple one, though--this is just taking a literal, saying vcsunny.1260

We will see more complex ones in the regular expression lesson, but...1268

The replacement is this "rainy", and you will notice, after I do the gsub, it returns a new object: in this case, it says, "I like rainy weather."1274

I believe there is also a self for this, that you could also use--gsub! with an exclamation--to update the existing object.1283

The next thing we're going to look at is string deletion.1293

This method takes the arguments of the thing you are deleting.1297

All characters in the intersection of the arguments are deleted.1306

For this one, I have this sentence, "Hello, welcome to Dave's presentation."--it has a bunch of carriage returns, and it's hard to read, so what I do is, I put the argument I want to delete.1311

It's this carriage return, so I have one there...I have one there...I have a third one there.1329

It's going to remove these, and then, after I do the delete, it will actually update the existing string.1336

You will see it's much cleaner now; I can read that.1344

"Hello, welcome to Dave's presentation. Please turn off your cell phones. We will start soon. Thank you."1349

This actually has a period, here.1356

The next method we're looking at is the reverse.1361

This is a very simple method; it will take the string and reverse it.1366

It returns a new string with the characters in reverse order.1372

Since I didn't want to type out a through z, I used this range, and if you call reverse on it, it will just reverse all the characters, so it goes back from z to a.1377

The next string manipulation we're looking at is the split method.1394

The split takes a limit, which is optional.1400

This argument is optional, and I don't use it all the time...and it takes a pattern.1407

This method divides a string into substrings using a delimiter.1419

More importantly, it will return an Array of substrings.1431

This pattern will default to white space, and the limit will give the maximum number of fields to be returned.1440

Let's say I call split without any arguments: it's going to see any spaces I have, and it's going to use that to break it up and put it as different pieces of substrings in the Array.1454

For our example, we're going to look at split with the comma.1471

Here, I have my example with item prices.1476

Notice, they all have these commas--10, 20 dollars, 14.99, 3.99, 5.99...1480

Using this split method is pretty handy.1487

After I call this split, it's going to break this string up to substrings and store it as an Array for me.1491

My first element is 10 dollars, 20, 14.99, 3.99, 5.99...and this is all in one Array.1501

Remember, with this split, I can pass in whatever arguments I want.1514

I could even use this period, and it's going to give me some weird substrings that it's going to pass, too.1518

The next one we're going to look at is upcase.1528

This returns a string with all the lowercase letters replaced with uppercase counterparts.1530

For example, I have a string that says, "I'm going to the zoo today to check out the pandas."1540

Call upcase, and now it's really shouting: "I'M GOING TO THE ZOO TODAY TO CHECK OUT THE PANDAS."1546

That's all upcase does--it takes the letters and uppercases all of them.1552

Again, there is another one called downcase; it does the exact opposite of upcase.1559

It returns a string with all the uppercase letters replaced with lowercase counterparts.1564

I have the string, "I HATE FRUIT.", and then the downcase version is just, "i hate fruit.", all in lowercase.1570

There is also a swapcase that does a combination of the upcase and downcase.1581

It...let's see here...does both upcase and downcase.1587

Now, what do I mean by that? Anything uppercase will become lowercase, and anything lowercase will become uppercase.1601

Swapcase returns a copy of a string with uppercase characters converted to lowercase and lowercase characters converted to uppercase.1608

Our example here: we have the lowercase abc, capital ABC; swapcase; it will return the lowercase letters as upper and the uppercase letters as lower.1623

Incrementing strings: this one uses the next--we're using the next method.1642

You could also use succ, which does the same thing.1652

This will increment the string using the rightmost character.1660

For example, we have 2012; if I call next on it, you will see it says 2013 now, and if I call next again it's 2014.1665

That is the end of this lesson for strings.1679

There was a lot of stuff that we covered in strings already, in the Ruby Datatypes Part 1.1684

I suggest you look at that, and look at the regular expressions lesson.1692

There are a lot of good things there to do more string manipulation.1699

That is the end of this lesson.1703

See you at the next one.1709