From: D T Date: 2004-07-22T07:37:17+09:00 Subject: Re: substring by range parameter (bug?) 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 >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