# Substituting single quotes in strings

**URL:** <https://www.ruby-forum.com/t/substituting-single-quotes-in-strings/155768>\
**Category:** Rails\
**Created:** [December 16, 2008, 4:01pm UTC](https://www.ruby-forum.com/t/substituting-single-quotes-in-strings/155768 "2008-12-16T16:01:40Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![makire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/fbc32d/32.png) [@makire](https://www.ruby-forum.com/u/makire)\
**Post date:** [December 16, 2008, 4:01pm UTC](https://www.ruby-forum.com/t/substituting-single-quotes-in-strings/155768/1 "2008-12-16T16:01:40Z")

</div>

Hi

I want to substitute single quotes in a string but fails unless  
resorting to overkill (imho) techniques like blocks:

> > s = “ab’cd”  
> > =\> “ab’cd”
> 
> > s.sub("’") {|s| %q{’} }  
> > =\> “ab\'cd”

As seen this method works but why can’t I do something like

> > a.sub("’", %q{’})  
> > =\> “aaabbbbbb”

when

> > a.sub("’", %q{h})  
> > =\> “aaahbbb”

works?

Can someone shed some light on this? Thanks in advance.

Regards

Erik

---

<div class="post-metadata">

**Author:** ![makire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/fbc32d/32.png) [@makire](https://www.ruby-forum.com/u/makire)\
**Post date:** [December 16, 2008, 5:06pm UTC](https://www.ruby-forum.com/t/substituting-single-quotes-in-strings/155768/2 "2008-12-16T17:06:52Z")

</div>

On 16 Dec 2008, at 15:01, Erik L. wrote:

> 

s.sub("’","\\’")

You need four backslashes because:

- backslashes have to be escaped in a string literal
- in the case of a sub/gsub subsitution, a backslash has special  
meaning (because you can do stuff like s.sub(/(’)/, “x\1x”) #=\>  
“abx’xcd”

Fred

---

<div class="post-metadata">

**Author:** ![makire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/fbc32d/32.png) [@makire](https://www.ruby-forum.com/u/makire)\
**Post date:** [December 16, 2008, 5:39pm UTC](https://www.ruby-forum.com/t/substituting-single-quotes-in-strings/155768/3 "2008-12-16T17:39:46Z")

</div>

Thanks

I did not think about the potential back reference for regexps. Good  
catch.

Regards

Erik
