Bug #17467
closedWhat makes strip() and lstrip() not stripping \u0000 from beginning of the string?
Description
Both strip(), and rstrip() will delete \u0000 from the end of a string. But I have a string that has "\u0000hello\u0000".
Output from strip, lstrip and rstrip:
"\u0000hello\u0000".strip # => "\u0000hello"
"\u0000hello\u0000".lstrip # => "\u0000hello\u0000"
"\u0000hello\u0000".rstrip # => "\u0000hello"
Same goes for \x00 as well.
While it's quite ridiculous to have NULL at the beginning of the string, but what makes it not strip? Is that slow or is that because it's never used?
Updated by SouravGoswami (Sourav Goswami) almost 4 years ago
- Subject changed from What makes strip() and lstrip() not stripping \u0000? to What makes strip() and lstrip() not stripping \u0000 from beginning of the string?
Updated by jeremyevans0 (Jeremy Evans) over 3 years ago
I agree that this is a bug. The documentation for strip and lstrip specifies that the whitespace should be stripped, and defines whitespace to include null. I have submitted a pull request to fix it: https://github.com/ruby/ruby/pull/4164
Updated by jeremyevans (Jeremy Evans) over 3 years ago
- Status changed from Open to Closed
Applied in changeset git|cfd162d535c7a4f8b1f95255cc6be696a8b75557.
Make String#{strip,lstrip}{,!} strip leading NUL bytes
The documentation already specifies that they strip whitespace
and defines whitespace to include null.
This wraps the new behavior in the appropriate guards in the specs,
but does not specify behavior for previous versions, because this
is a bug that could be backported.
Fixes [Bug #17467]
Updated by znz (Kazuhiro NISHIYAMA) over 3 years ago
Japanese reference manual mentions treatment "\0"
.
(for example: https://docs.ruby-lang.org/ja/latest/method/String/i/strip.html )
If this will backport to released versions, it affects version branching in Japanese reference manual.
Which versions will have backports?
I have no opinion to backport or not.
I only want to know how to mention changed version in Japanese reference manual.
Updated by byroot (Jean Boussier) over 3 years ago
I believe this fix should be backported.
Updated by jeremyevans0 (Jeremy Evans) over 3 years ago
- Backport changed from 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN to 2.6: UNKNOWN, 2.7: REQUIRED, 3.0: REQUIRED
@byroot (Jean Boussier) I marked this for backporting. Here's the guide for how to do that: https://bugs.ruby-lang.org/projects/ruby/wiki/HowToRequestBackport
Updated by nagachika (Tomoyuki Chikanaga) over 3 years ago
- Backport changed from 2.6: UNKNOWN, 2.7: REQUIRED, 3.0: REQUIRED to 2.6: UNKNOWN, 2.7: REQUIRED, 3.0: DONE
ruby_3_0 5af5ea7f860ed64062796e54e73274e7a56c7280 merged revision(s) cfd162d535c7a4f8b1f95255cc6be696a8b75557.