Issue #12969 has been updated by Herwin Quarantainenet.
The concrete use case that I got was that I wanted to replace all trailing whitespace, but leave tabs/newlines etc untouched. The current code looks like this:
```ruby
newstr = str.sub(/ +$/, '')
```
I tried to see if there was a more suitable method in String to do this, but both `String#rstrip` and `String#chomp` case close to what I needed here, but no cigar.
----------------------------------------
Feature #12969: Allow optional parameter in String#strip and related
https://bugs.ruby-lang.org/issues/12969#change-61618
* Author: Herwin Quarantainenet
* Status: Open
* Priority: Normal
* Assignee:
----------------------------------------
`String#strip` and related methods have a hardcoded match on whitespace, defined as "null, horizontal tab, line feed, vertical tab, form feed, carriage return, space". It would be nice to allow a parameter to specify the characters you want to strip.
This would result in a kind of marriage between `String#delete` and `String#chomp`. The first one is an example on how to specify character classes, the second one is an example on how to pass an optional parameter.
Examples how this would work:
```ruby
"hellooo ".rstrip #=> "hellooo"
"hellooo ".rstrip(" ") #=> "hellooo"
"hellooo ".rstrip(" o") #=> "hell"
"hellooo ".rstrip("o ") #=> "hell"
"hellooo ".rstrip("o") #=> "hellooo "
"hellooo ".chomp(" ") #=> "hellooo ", only replaces one character, thus not a sensible alternative
```
The same behaviour can be achieved by using `String#sub` and the correct anchors, but I think an optional parameter to `String#strip` is cleaner to read. It's probably faster too, since we don't have to initialize a regex state machine.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>