Replace words in a string - Ruby

I have a string in Ruby:

sentence = "My name is Robert" 

How can I replace any one word in this sentence easily without using complex code or a loop?

2

4 Answers

sentence.sub! 'Robert', 'Joe' 

Won't cause an exception if the replaced word isn't in the sentence (the []= variant will).

How to replace all instances?

The above replaces only the first instance of "Robert".

To replace all instances use gsub/gsub! (ie. "global substitution"):

sentence.gsub! 'Robert', 'Joe' 

The above will replace all instances of Robert with Joe.

5

If you're dealing with natural language text and need to replace a word, not just part of a string, you have to add a pinch of regular expressions to your gsub as a plain text substitution can lead to disastrous results:

'mislocated cat, vindicating'.gsub('cat', 'dog') => "mislodoged dog, vindidoging" 

Regular expressions have word boundaries, such as \b which matches start or end of a word. Thus,

'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog') => "mislocated dog, vindicating" 

In Ruby, unlike some other languages like Javascript, word boundaries are UTF-8-compatible, so you can use it for languages with non-Latin or extended Latin alphabets:

'сіль у кисіль, для весіль'.gsub(/\bсіль\b/, 'цукор') => "цукор у кисіль, для весіль" 
1

You can try using this way :

sentence ["Robert"] = "Roger" 

Then the sentence will become :

sentence = "My name is Roger" # Robert is replaced with Roger 
10

First, you don't declare the type in Ruby, so you don't need the first string.

To replace a word in string, you do: sentence.gsub(/match/, "replacement").

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like