Ref. WGR Chapter 8, Section 8.1, Working with strings
double-quotes allow interpolation and escaping
"\t" #=> "\t"
name = "alice"
"hello, #{name}" #=> "hello, alice"
single-quotes are more literal-minded
'\t' #=> "\\t"
there are many other bizarre ways to declare a string (see below)
s = "Ruby rocks"
s[5] #=> "r"
s[5,3] #=> "roc"
s[5,100] #=> "rocks"
s[-3] #=> "c"
s[2..6] #=> "by ro"
s = "Ruby rocks"
s[/r../] #=> "roc"
s[/r../i] #=> "Rub"
s = "Ruby rocks"
s["rock"] = "rule"
s #=> "Ruby rules"
plus makes a new string
s = "dog"
s + "cow" #=> "dogcow"
s #=> "dog"
shovel changes the original string
s = "dog"
s << "cow" #=> "dogcow"
s #=> "dogcow"
plus-equal makes a new string but changes the variable
s = "dog"
s += "cow" #=> "dogcow"
s #=> "dogcow"
Takes any ruby expression, calls to_s
on it, and smooshes it inside a string
"nothing compares #{1+1} u" #=> "nothing compares 2 u"
anything can go in there, including operators and quotes
"i love #{@girlfriend or "nobody"}"
Strings are == if their characters are the same
"alice" == "alice" #=> true
Characters are compared in ASCII order (not Unicode or Collation order)
"a" < "b" #=> true
"a" < "Z" #=> false
The "flying saucer" operator is used for sorting
"a" <=> "b" #=> -1
["d", "o", "g"].sort #=> ["d", "g", "o"]
gsub
gsub
munges a string
s = "rubber baby buggy bumpers"
s.gsub(/b/, "g")
s #=> "rugger gagy guggy gumpers"
gsub!
modifies the string in placesplit
split
turns a string into an array
"apple banana cherry".split
=> ["apple", "banana", "cherry"]
join
join
turns an array into a string
["apple", "banana", "cherry"].join
=> "applebananacherry"
["apple", "banana", "cherry"].join(' ')
=> "apple banana cherry"
Method | turns a(n)... | into a(n)... |
---|---|---|
split | String | Array |
join | Array | String |
gsub | String | String |
map | Array | Array |
upcase
downcase
capitalize
reverse
"stressed".reverse => "desserts"
strip
chomp
center(width)
some of these have !
versions which modify the string in place
default is ASCII, but can be set to UTF-8 or whatever
# encoding: utf-8
%Q{don't worry, "man"}
%q{don't #{interpolate}, "man"}
%Q{...}
, %Q(...)
, %Q|...|
, etc.newlines do not end a string
"Now is the winter of our discontent
made glorious summer by this son of York."
=>
ruby
"now is the winter of our discontent\nmade glorious summer by this son of York."
first_quatrain = <<END
My mistress' eyes are nothing like the sun;
Coral is far more red than her lips' red;
If snow be white, why then her breasts are dun;
If hairs be wires, black wires grow on her head.
END
def second_quatrain
x = <<-HTML
<blockquote>
I have seen roses damask'd, red and white,
But no such roses see I in her cheeks;
And in some perfumes is there more delight
Than in the breath that from my mistress reeks.
</blockquote>
HTML
x
end
x = <<-NUM.to_i * 10
5
NUM
x # => 50
Weird, huh?
/