On Mon, 2002-07-08 at 16:51, David Alan Black wrote:
> surprisingly to me -- it turns out that if you provide a string:
> 
>   str.split(aString) ...
> 
> and if aString is longer than one character, then aString is
> automatically converted to a regex.

yikes! off the cuff, i would think this would cause some significant
performance loss. yea? nay? not to mention some confusion.

and does #index work the same way?

~transami


On Mon, 2002-07-08 at 16:51, David Alan Black wrote:
> Hello --
> 
> [This comes from some peripheral playing around having to do with the
> various String#each threads, but (I promise! :-) it's not directly on
> that topic.]
> 
> This is something I've been discussing and investigating on #ruby-lang
> with Martin Chase, Holden Glova, Michael Granger.
> 
> According to the docs I've seen, String#split can take either a string
> or a regex as the separator/delimiter argument.  However -- very
> surprisingly to me -- it turns out that if you provide a string:
> 
>   str.split(aString) ...
> 
> and if aString is longer than one character, then aString is
> automatically converted to a regex.  Examples:
> 
>   One-char strings, treated as strings:
> 
>     irb(main):001:0> "abc.+def".split("e")
>     ["abc.+d", "f"]
>     irb(main):002:0> "abc.+def".split(".")
>     ["abc", "+def"]
> 
>   strings of >1 char, converted to regexes (!)
> 
>     irb(main):003:0> "abc.+def".split(".e")
>     ["abc.+", "f"]
>     irb(main):004:0> "abc.+def".split(".+")
>     []
> 
> This means also that strings without any regex special characters are
> really "splitting on a string" only by coincidence.  They're really
> splitting on a regex which happens to provide the results one would
> have expected from splitting on a string.  Thus, for example:
> 
>   irb(main):003:0> "here there and everywhere".split("er")
>   ["h", "e th", "e and ev", "ywh", "e"]
> 
> is really treating the string arg as a regex, as shown by:
> 
>   irb(main):005:0> "here there and everywhere".split(".r")
>   ["h", "e th", "e and ev", "ywh", "e"]
> 
> producing the same results.
> 
> Any insights on why #split does this?  I found it quite surprising
> when I discovered it, and I don't know of anywhere where it's
> documented as working this way.
> 
> 
> David
> 
> -- 
> David Alan Black
> home: dblack / candle.superlink.net
> work: blackdav / shu.edu
> Web:  http://pirate.shu.edu/~blackdav
> 
> 
-- 
~transami

"They that can give up essential liberty to obtain a little
 temporary safety deserve neither liberty nor safety."
	-- Benjamin Franklin