# Literal quote in an array?

**URL:** <https://www.ruby-forum.com/t/literal-quote-in-an-array/115384>\
**Category:** Ruby\
**Created:** [September 24, 2007, 7:29pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384 "2007-09-24T19:29:00Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 24, 2007, 7:29pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384/1 "2007-09-24T19:29:00Z")

</div>

using colons for now, but would like to somehow encapsulate a sentence  
in this way (basically), with quotes.

speaker = ["joe ", "betty "]  
expression = ["said: ", "replied: ", "stated: "]  
content = [“hello.”, “bye.”]

053:0\> sentence = speaker[0] + expression[1] + content[0]  
“joe replied: hello.”  
but I’d like to get:  
“joe replied, “hello.””

thanks!

---

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 24, 2007, 7:32pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384/2 "2007-09-24T19:32:08Z")

</div>

Simon S. wrote:

> using colons for now, but would like to somehow encapsulate a sentence  
> in this way (basically), with quotes.
> 
> speaker = ["joe ", "betty "]  
> expression = ["said: ", "replied: ", "stated: "]  
> content = [“hello.”, “bye.”]
> 
> 053:0\> sentence = speaker[0] + expression[1] + content[0]  
> “joe replied: hello.”  
> but I’d like to get:  
> “joe replied, “hello.””
> 
> thanks!

‘“hello”’  
%q{“hello”}  
““hello””

---

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 24, 2007, 7:39pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384/3 "2007-09-24T19:39:01Z")

</div>

This can work if you do not have strange characters in the content:  
sentence = speaker[0] + expression[1] + content[0].inspect

This is better:  
sentence = speaker[0] + expression[1] + “"#{content[0]}"”

2007/9/24, Simon S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 24, 2007, 7:45pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384/4 "2007-09-24T19:45:02Z")

</div>

Simon S. wrote:

> speaker = ["joe ", "betty "]  
> expression = [“said”, “replied”, “stated”]  
> content = [“hello.”, “bye.”]
> 
> 053:0\> sentence = speaker[0] + expression[1] + content[0]  
> “joe replied: hello.”  
> but I’d like to get:  
> “joe replied, “hello.””

I’d do it like this:  
speaker = %w(joe betty)  
expression = %w(said replied stated)  
content = %w(hello. bye.)  
sentence = “#{speaker[0]} #{expression[1]}, #{content[0].inspect}”

If using inspect feels too hackish to you, you could use  
“#{content[0]}”  
instead.

HTH,  
Sebastian

---

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 24, 2007, 7:53pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384/5 "2007-09-24T19:53:04Z")

</div>

excellent, thank you

---

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 24, 2007, 7:46pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384/6 "2007-09-24T19:46:02Z")

</div>

On Sep 24, 2007, at 1:37 PM, Gaspard B. wrote:

> > “joe replied: hello.”  
> > sentence = speaker[0] + expression[1] + “"#{content[0]}"”  
> > Or better still:

sentence = %{#{speaker[0]} #{expression[1]} “#{content[0]}”}

Then you don’t need the extra spaces in the speaker and expression  
elements.

-Rob

Rob B. [http://agileconsultingllc.com](http://agileconsultingllc.com)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 24, 2007, 8:41pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384/7 "2007-09-24T20:41:11Z")

</div>

On Sep 24, 11:28 am, “Simon S.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> “joe replied, “hello.””  
> Seeing what you’re doing, I thought I’d show you my “String#variation”  
> method, that allows you to write a generic sentence like this:  
> q = "(How (much|many)|What) is (the (value|result) of)? "  
> and generate random variations on it via:  
> q.variation

If you have variables you want to substitute into the string, you can  
either do that during construction (if they never change):  
q = “(Hello|Howdy), #{name}”  
or you can substitute the name variable on the fly:  
q = “(Hello|Howdy), :name”  
greeting = q.variation( :name=\>“Bob” )

I wrote this code for my solution to Quiz #48 [1], and have only ever  
used it there, but it’s reasonably simple and seems solid enough.

class String  
def variation( values={} )  
out = self.dup  
while out.gsub!( /(([^())?]+))(?)?/ ){  
( $2 && ( rand \> 0.5 ) ) ? ‘’ : $1.split( ‘|’ ).random  
}; end  
out.gsub!( /:(#{values.keys.join(‘|’)})\b/ ){ values[$1.intern] }  
out.gsub!( /\s{2,}/, ’ ’ )  
out  
end  
end

Perhaps you will find it useful.

[1] [http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/157538](http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/157538)

---

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 24, 2007, 8:46pm UTC](https://www.ruby-forum.com/t/literal-quote-in-an-array/115384/8 "2007-09-24T20:46:15Z")

</div>

On Sep 24, 12:38 pm, Phrogz [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> end  
> Oops, I forgot that this relies on having:

class Array  
def random  
self[rand( self.length )]  
end  
end
