Actions
Bug #10476
closedString.strip remove characters different than pure whitespace
Description
The offical documentation (http://www.ruby-doc.org/core-2.1.4/String.html#method-i-strip) says:
strip → new_str
Returns a copy of str with leading and trailing whitespace removed.
But
[9] pry(main)> "#{0.chr}#{9.chr}#{10.chr}#{11.chr}#{12.chr}#{13.chr}#{32.chr}"
=> "\x00\t\n\v\f\r "
[10] pry(main)> "#{0.chr}#{9.chr}#{10.chr}#{11.chr}#{12.chr}#{13.chr}#{32.chr}".length
=> 7
[11] pry(main)> "#{0.chr}#{9.chr}#{10.chr}#{11.chr}#{12.chr}#{13.chr}#{32.chr}".strip
=> ""
([4] pry(main)> (0..255).each { |char| puts "char #{char} stripped" if char.chr.strip.empty? }
char 0 stripped
char 9 stripped
char 10 stripped
char 11 stripped
char 12 stripped
char 13 stripped
char 32 stripped
Stripped characters are
- Null char (0)
- Horizontal Tab (9)
- Line Feed (10)
- Vertical Tab (11)
- Form Feed (12)
- Carriage Return (13)
- Space (32)
Files
Updated by yld (Yves Le Douaron) almost 10 years ago
With the old 1.8.7 interpreter, the behaviour of strip was different:
1.8.7-head :010 > "#{0.chr}#{9.chr}#{10.chr}#{11.chr}#{12.chr}#{13.chr}#{32.chr}".strip
=> "\000"
1.8.7-head :011 > "#{0.chr}#{9.chr}#{10.chr}#{11.chr}#{12.chr}#{13.chr}#{32.chr}.#{0.chr}".strip
=> "\000\t\n\v\f\r ."
The null character was stripped from the end of the string but not from the beginning...
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Status changed from Open to Rejected
As the example in the doc states, "whitespace" includes these characters.
Updated by yld (Yves Le Douaron) almost 10 years ago
The example only includes 4 of these 7 characters, null, form feed and vertical tab are missing.
Maybe a documentation update could be usefull?
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Category changed from core to doc
- Status changed from Rejected to Assigned
- Assignee changed from core to zzak (zzak _)
Yes, definitely.
Updated by Anonymous almost 10 years ago
- File bug-10476.patch bug-10476.patch added
How about something like this?
Updated by yld (Yves Le Douaron) over 9 years ago
It looks perfect.
Updated by ayumin (Ayumu AIZAWA) over 9 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
Applied in changeset r49135.
- string.c: improve docs for String#strip and variations. [ruby-core:66081][Bug #10476]
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0