---
title: Ruby String Methods
---
## Ruby String Methods
Ruby has many built in methods to work with strings. Strings in Ruby by default are mutable and can be changed in place or a new string can be returned from a method.

### Length:

*   The `.length` property returns the number of characters in a string including white-space.
    ```ruby
    "Hello".length #=> 5
    "Hello World!".length #=> 12
    ```
    
### Empty:

*   The `.empty?` method returns `true` if a string has a length of zero.
    ```ruby
    "Hello".empty? #=> false
    "!".empty?     #=> false
    " ".empty?     #=> false
    "".empty?      #=> true
    ```
    
### Count:

*   The `.count` method counts how many times a specific character(s) is found in a string.
*   This method is case-sensitive.
    ```ruby
    "HELLO".count('L') #=> 2
    "HELLO WORLD!".count('LO') #=> 1
    ```

### Insert:

*   The `.insert` method inserts a string into another string before a given index.
    ```ruby
    "Hello".insert(3, "hi5") #=> Helhi5lo # "hi5" is inserted into the string right before the second 'l' which is at index 3
    ```

### Upcase:

*   The `.upcase` method transforms all letters in a string to uppercase.
    ```ruby
    "Hello".upcase #=> HELLO
    ```

### Downcase:

*   The `.downcase` method transforms all letters in a string to lowercase.
    ```ruby
    "Hello".downcase #=> hello
    ```
### Swapcase

* The `.swapcase` method transforms the uppercase latters in a string to lowercase and the lowercase letters to uppercase.
  ```ruby
  "hELLO wORLD".swapcase #=> Hello World
  ```

### Capitalize:

*   The `.capitalize` method make the first letter in a string uppercase and the rest of the string lowercase.
    ```ruby
    "HELLO".capitalize #=> Hello
    "HELLO, HOW ARE YOU?".capitalize #=> Hello, how are you?
    ```

_Note that the first letter is only capitalized if it is at the beginning of the string._
    ```ruby
    "-HELLO".capitalize #=> -hello
    "1HELLO".capitalize #=> 1hello
    ```

### Reverse:

*   The `.reverse` method reverses the order of the characters in a string.
    ```ruby
    "Hello World!".reverse #=> "!dlroW olleH"
    ```

### Split:

*   The `.split` takes a strings and _splits_ it into an array, then returns the array.
    ```ruby
    "Hello, how are you?".split #=> ["Hello,", "how", "are", "you?"]
    ```
    
*   The default method splits the string based on whitespace, unless a different separator is provided (see second example).
    ```ruby
    "H-e-l-l-o".split('-') #=> ["H", "e", "l", "l", "o"]
    ```
*   To split a word in to individual letters :
    ``` ruby
    "hello".split("") #=> ["h", "e", "l", "l", "o"]
    ```
    
### Chop:

*   The `.chop` method removes the last character of the string.
*   A new string is returned, unless you use the `.chop!` method which mutates the original string.
    ```ruby
    "Name".chop #=> Nam
    ```

    ```ruby
    name = "Batman"
    name.chop
    name == "Batma" #=> false
    ```

    ```ruby
    name = "Batman"
    name.chop!
    name == "Batma" #=> true
    ```

### Strip:

*   The `.strip` method removes the leading and trailing whitespace on strings, including tabs, newlines, and carriage returns (`\t`, `\n`, `\r`).
    ```ruby
    "  Hello  ".strip #=> Hello
    ```

### Chomp:

*   The `.chomp` method removes the last character in a string, only if it’s a carriage return or newline (`\r`, `\n`).
*   This method is commonly used with the `gets` command to remove returns from user input.
    ```ruby
    "hello\r".chomp #=> hello
    "hello\t".chomp #=> hello\t # because tabs and other whitespace remain intact when using `chomp`
    ```

### To Integer:

*   The `.to_i` method converts a string to an integer.
    ```ruby
    "15".to_i #=> 15 # integer
    ```
    
### Gsub:

*  `gsub` replaces every reference of the first parameter for the second parameter on a string.
```ruby
"ruby is cool".gsub("cool", "very cool") #=> "ruby is very cool"
```
*  `gsub` also accepts patterns (like *regexp*) as first parameter, allowing things like:
```ruby
"ruby is cool".gsub(/[aeiou]/, "*") #=> "r*by *s c**l"
```

### Concatenation:

*   Ruby implements some methods to concatenate two strings together:

   *  The `+` method:
  ```ruby
  "15" + "15" #=> "1515" # string
  ```

   * The `<<` method:
   ```ruby
   "15" << "15" #=> "1515" # string
   ```

   * The `concat` method:
   ```ruby
   "15".concat "15" #=> "1515" # string
   ```

### Index:

*   The `index` method returns the index position of the first occurrance of the substring or regular expression pattern match in a string. 
*   If there is no match found, `nil` is returned.
*   A second optional parameter indicates which index position in the string to begin searching for a match.

    ```ruby
    "information".index('o') #=> 3
    "information".index('mat') #=> 5
    "information".index(/[abc]/) #=> 6
    "information".index('o', 5) #=> 9
    "information".index('z') #=> nil
    ```

### Clear:

*   Removes string content.
    ```ruby
    a = "abcde"
    a.clear    #=> ""
    ```


