From: duerst@...
Date: 2017-01-20T08:19:36+00:00
Subject: [ruby-core:79188] [Ruby trunk Feature#12969] Allow optional parameter in String#strip and related

Issue #12969 has been updated by Martin D��rst.


Yukihiro Matsumoto wrote:
> Removing pattern may not be set of single character, or may be complex.
> Considering that, using regular expression is the best way, I think.

I agree. It would also allow to specify character ranges and character properties.


----------------------------------------
Feature #12969: Allow optional parameter in String#strip and related
https://bugs.ruby-lang.org/issues/12969#change-62613

* Author: Herwin Quarantainenet
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
`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>