Correct to my previous conclusion.
The empty string, itself, does have one and only one empty substring too.
And the empty string case is even more strange...

List all what I found here:

s="ab"; s[-1..-2]="xxx"; p s   #=> s = "axxxb"
s="ab"; s[-2..-3]="xxx"; p s   #=> s = "xxxab"
s="ab"; s[1..0]="xxx"; p s     #=> s = "axxxb", same case as s[-1..-2]
s="ab"; s[2..1]="xxx"; p s     #=> s = "abxxx"

"ab"[3..2]   #=> nil
"ab"[-3..-4] #=> nil

empty string case: (only 1 empty substring)
""[-1..-2]  #=> nil
""[-1..0]   #=> nil
""[1..2]    #=> nil
""[0..-1]   #=> ""
""[0..1]    #=> ""
""[0..2]    #=> ""
""[0..3]    #=> ""
""[0..4]    #=> ""
""[0..5]    #=> ""
... etc

(All empty substring of empty string is the same, you could re-assing to see 
it)


>From: Hal Fulton <hal9000 / hypermetrics.com>
>Reply-To: ruby-talk / ruby-lang.org
>To: ruby-talk / ruby-lang.org (ruby-talk ML)
>Subject: Re: substring by range parameter (bug?)
>Date: Thu, 22 Jul 2004 07:19:40 +0900
>
>D T wrote:
>>OK. You got my point.
>>And your explanation seems logic to me.
>>Thanks.
>>
>>Anyway, I still feel this is very strange...
>>"a"[-1..-2] #=> ""
>>""[-1..-2] #=> nil
>>
>>My Conclusion is : For any no empty string, it exists exactly string's 
>>length + 1 of empty substring!
>>(location does matter)
>>
>>Example: for "ab", there are exactly 3 empty substrings locate at "^a^b^"  
>>(^ shows empty string position)
>>
>>s="ab"; s[-1..-2]="xxx"; p s   #==> s = "axxxb"
>>s="ab"; s[-2..-3]="xxx"; p s   #==> s = "xxxab"
>>s="ab"; s[1..0]="xxx"; p s     #==> s = "axxxb", it is the same as 
>>s[-1..-2]
>>s="ab"; s[2..1]="xxx"; p s     #==> s = "abxxx"
>>
>>As you can see, there are exactly 3 empty substrings on "ab". (and you can 
>>re-assing)  ;-)
>
>
>This is the most logical analysis of this issue that I remember
>seeing. Thank you for that.
>
>And also IMO it's the best justification for this behavior -- after
>all, "before the beginning" and "after the end" are valid locations
>as far as insertion goes.
>
>I now understand better what matz said long ago, about an imaginary
>pointer in between the elements. I understand this better WRT insertion
>than WRT accessing data.
>
>Array subranges work much the same way, I believe, correct?
>
>
>Hal
>
>

_________________________________________________________________
Planning a family vacation? Check out the MSN Family Travel guide! 
http://dollar.msn.com