• can't understand for String.delete

    From ventpdev@gmail.com@21:1/5 to All on Sat Jun 13 13:25:28 2020
    On Tuesday, 24 November 2009 15:37:59 UTC, Jesús Gabriel y Galán wrote:
    On Tue, Nov 24, 2009 at 2:41 PM, Ruby Newbee <rubynewbee@gmail.com> wrote:
        Returns a copy of _str_ with all characters in the intersection of
        its arguments deleted. Uses the same rules for building the set of
        characters as +String#count+.

           "hello".delete "l","lo"        #=> "heo"
           "hello".delete "lo"            #=> "he"
           "hello".delete "aeiou", "^e"   #=> "hell"
           "hello".delete "ej-m"          #=> "ho"

    What does this mean?
    I can't understand for the rules.

    What it means is that it builds a character set performing the
    intersection of all arguments to the method. So if you do
    s.delete("h", "he") the intersection of the arguments is "h", because
    it's the only one present in all arguments. If the arguments don't
    intersect nothing is deleted:

    irb(main):001:0> "hello".delete "h", "e"

    The other part of the explanation means that as the documentation for String#count says

    "Any other_str that starts with a caret (^) is negated. The sequence
    c1—c2 means all characters between c1 and c2. "

    This means that s.delete("^aeiou") will remove all consonants and
    leave the vocals, and that s.delete("a-m") will delete all characters
    between "a" and "m":

    irb(main):002:0> "hello".delete "a-m"
    irb(main):003:0> "hello".delete "^aeiou"

    Hope this helps,


    very useful thx

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)