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 +0900D 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] #=> nilMy 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