0
0
RubyHow-ToBeginner · 3 min read

How to Use chomp in Ruby: Remove Trailing Newlines Easily

In Ruby, use the chomp method on a string to remove the trailing newline character (\n) or other specified record separator. It returns a new string without the newline, leaving the original string unchanged unless you use chomp! which modifies the string in place.
📐

Syntax

The chomp method is called on a string object. It removes the trailing newline or a specified separator from the end of the string.

  • string.chomp: Returns a new string without the trailing newline.
  • string.chomp(separator): Removes the specified separator if it is at the end.
  • string.chomp!: Modifies the original string in place and returns nil if no changes were made.
ruby
string.chomp(separator = $/)
💻

Example

This example shows how chomp removes the newline character from a string returned by gets. It also shows using chomp! to modify the string directly.

ruby
input = "Hello\n"
puts "Original string:"
puts input.inspect

chomped = input.chomp
puts "After chomp (new string):"
puts chomped.inspect

input.chomp!
puts "After chomp! (modified original):"
puts input.inspect
Output
"Hello\n" "Hello" "Hello"
⚠️

Common Pitfalls

One common mistake is expecting chomp to modify the original string. It returns a new string instead. To change the original string, use chomp!. Also, if the string does not end with the separator, chomp! returns nil, which can be confusing.

ruby
str = "Hello"
result = str.chomp!
puts result.nil? ? "No change made" : result

# Correct way to check and modify
str = "Hello\n"
if str.chomp!
  puts "String changed to: #{str.inspect}"
else
  puts "No change needed"
end
Output
No change made String changed to: "Hello"
📊

Quick Reference

MethodDescriptionReturns
chompReturns new string without trailing newline or separatorNew string
chomp(separator)Removes specified separator if at endNew string
chomp!Modifies original string in placeModified string or nil if no change

Key Takeaways

Use chomp to remove trailing newlines without changing the original string.
Use chomp! to modify the string itself, but check for nil if no change occurs.
You can specify a custom separator to remove instead of the default newline.
Remember chomp only removes the separator if it is at the end of the string.
Use inspect when printing strings to clearly see newline characters.