Issue #10518 has been updated by Eric Wong.


 sergio.gallelli / gmail.com wrote:
 > irb(main):001:0> str = 'A-B'
 > => "A-B"
 > irb(main):002:0> str.delete ' -#'
 > => "A-B"
 
 ' -#' is interpreted as: range of characters from ' ' (space) to '#'.
 See String#count documentation
 
 I suppose it is weird and surprising behavior, but I doubt it can change
 for compatibility.  I would normally use String#tr if I wanted a range.

----------------------------------------
Bug #10518: String "delete" method does not remove some characters from input string
https://bugs.ruby-lang.org/issues/10518#change-49979

* Author: Sergio Gallelli
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.1.4p265 (2014-10-27 revision 48166) [i386-mingw32]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
This bug affects all Ruby versions I tried, i.e. 2.0.0 and 2.1.4 on Windows and 2.1.5 on Linux
In some cases the String "delete" method does not remove all the characters from the input string I ask for removal.
The problem seems to depend on the string passed as argument to the delete method and on the order of its characters.
Please take a look at the simple "irb" dump below: 

irb(main):001:0> str = 'A-B'
=> "A-B"
irb(main):002:0> str.delete ' -#'
=> "A-B"
irb(main):003:0> str.delete ' #-'
=> "AB"

If I try to remove the dash from string 'A-B' passing ' -#' to the delete method, it does not work.
If I change the order of the characters passed to the delete method, the result is correct.
The attached Ruby program shows the above problem.

---Files--------------------------------
str_delete_bug.rb (59 Bytes)


-- 
https://bugs.ruby-lang.org/