summaryrefslogtreecommitdiff
path: root/doc/string/new.rdoc
blob: b8dac0085621ff7f74b647f71b1329ab84dce399 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Returns a new \String that is a copy of +string+.

With no arguments, returns the empty string with the Encoding <tt>ASCII-8BIT</tt>:
  s = String.new
  s # => ""
  s.encoding # => #<Encoding:ASCII-8BIT>

With the single \String argument +string+, returns a copy of +string+
with the same encoding as +string+:
  s = String.new('Que veut dire ça?')
  s # => "Que veut dire ça?"
  s.encoding # => #<Encoding:UTF-8>

Literal strings like <tt>""</tt> or here-documents always use
{script encoding}[rdoc-ref:Encoding@Script+Encoding], unlike String.new.

With keyword +encoding+, returns a copy of +str+
with the specified encoding:
  s = String.new(encoding: 'ASCII')
  s.encoding # => #<Encoding:US-ASCII>
  s = String.new('foo', encoding: 'ASCII')
  s.encoding # => #<Encoding:US-ASCII>

Note that these are equivalent:
  s0 = String.new('foo', encoding: 'ASCII')
  s1 = 'foo'.force_encoding('ASCII')
  s0.encoding == s1.encoding # => true

With keyword +capacity+, returns a copy of +str+;
the given +capacity+ may set the size of the internal buffer,
which may affect performance:
  String.new(capacity: 1) # => ""
  String.new(capacity: 4096) # => ""

The +string+, +encoding+, and +capacity+ arguments may all be used together:

  String.new('hello', encoding: 'UTF-8', capacity: 25)