# Not substitution \\0, etc. in String.sub?

**URL:** <https://www.ruby-forum.com/t/not-substitution-0-etc-in-string-sub/92042>\
**Category:** Ruby\
**Created:** [April 15, 2007, 7:41am UTC](https://www.ruby-forum.com/t/not-substitution-0-etc-in-string-sub/92042 "2007-04-15T07:41:30Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jay\_McGavren](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e79b87/32.png) [@Jay\_McGavren](https://www.ruby-forum.com/u/Jay_McGavren)\
**Post date:** [April 15, 2007, 7:41am UTC](https://www.ruby-forum.com/t/not-substitution-0-etc-in-string-sub/92042/1 "2007-04-15T07:41:30Z")

</div>

I have a string that happens to contain ‘\0’, which I need to  
substitute for a %x flag a la sprintf. Unfortunately, the ‘\0’ gets  
substituted for the initial match. So, this:

path = ‘C:\Artist\Album\01 Title.mp3’  
puts ‘%l’.sub(/%l/, path)

…gives me:

C:\Artist\Album%l1 Title.mp3

I’m sure there’s some way to disable the substitution that doesn’t  
involve contortions with escaping the backslashes, but I don’t know  
what it is. Anyone?

---

<div class="post-metadata">

**Author:** ![Jay\_McGavren](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e79b87/32.png) [@Jay\_McGavren](https://www.ruby-forum.com/u/Jay_McGavren)\
**Post date:** [April 15, 2007, 8:54am UTC](https://www.ruby-forum.com/t/not-substitution-0-etc-in-string-sub/92042/2 "2007-04-15T08:54:37Z")

</div>

Pass in a block instead:

puts ‘%l’.sub(/%l/) { path } #=\> C:\Artist\Album\01 Title.mp3
