Home
Search
Ruby Convert Types: Arrays and StringsCast and converts types: use methods to convert strings, arrays and hashes.
Convert. In Ruby a custom method can convert types—but this is rarely needed. We instead use built-in methods to convert common types like strings, arrays and hashes.
When possible, built-in methods are a good choice. They cover many edge cases, so you may need to make fewer changes. And they are fast to test and deploy.
String, array. A string can be converted to an array of characters with the split method. Here, we use a string that has 4 characters. After splitting, we have an array of 4 values.
Tip By default, the split method separates a string based on a space character. This will not work for a character-level conversion.
Split
# Input string has four characters. value = "test" # Split on an empty string delimiter. elements = value.split "" # Display result. puts elements.length puts elements
4 t e s t
Array, string. The join method combines elements of an array together into a new string. This is an ideal way to convert an array into a string.
Here We take an array of three characters, use join, and then have the string "abc."
Join The join method can add separator characters in between the elements of the array.
# The input array has three characters. values = ["a", "b", "c"] # Call join on the array. result = values.join puts result
abc
Hash. This example is somewhat more complex. It introduces a hash, and then converts the keys and values into arrays and strings. So we get a string of all the keys, and one of the values.
Hash
Tip The keys and values methods can be used directly as arrays. They can be looped over or used like any other array.
Array
To_a The to_a method is also available on a hash. This converts the hash into an array of two-element arrays (pairs).
And This converts a hash to an array (an "a") with no loss of information. All the pairs remain intact.
# An example hash. hash = {"a" => 1, "b" => 2, "c" => 3} # Convert keys into a string. result = hash.keys.join print "KEYS: ", result, "\n" # Convert values into a string. result = hash.values.join print "VALUES: ", result, "\n" # Convert entire hash into an array. elements = hash.to_a print "ARRAY LENGTH: ", elements.length, "\n" print "ARRAY : ", elements, "\n"
KEYS: abc VALUES: 123 ARRAY LENGTH: 3 ARRAY : [["a", 1], ["b", 2], ["c", 3]]
Number, string. Numbers can be converted into Strings with the String method. This receives a numeric variable and returns a String. It works on integers and floating-point values.
Note We show the conversion works by testing against a string "1234." This is a string-based comparison.
number = 1234 # Convert to String with String method. value = String(number) # Test String value. if value == "1234" puts true end
true
String, integer. Often a program reads in a file that contains numbers, or a use renters a number stored as a string. We convert these strings with the Integer built-in method.
Note This receives a String, and if valid, returns an Integer. Please check the next examples to deal with invalid Strings.
value = "1234" # Convert String to Integer. number = Integer(value) # Test Integer for correctness. if number == 1234 puts true end
true
Invalid string. We encounter an ArgumentError if we try to convert a non-numeric String to an Integer. We can work around this problem with a begin and raise block.
First We see a program that tries to convert a non-numeric string ("x") into an Integer. This fails with an ArgumentError.
Second We wrap those same statements in a begin and rescue block. The program still does not work, but it does not terminate early.
# Will not work. value = "x" number = Integer(value)
file.rb:3:in `Integer': invalid value for Integer(): "x" (ArgumentError)
begin # This is not a valid number string. value = "x" number = Integer(value) rescue # An error is raised. puts "Invalid number" end
Invalid number
Converting types is uninteresting task. But it is necessary. With this knowledge, we can focus more on core program design. And this focus leads to better, higher-quality programs.
Home
© 2007-2022 sam allen.
see site info on the changelog.