[erlang-questions] [enhancement] string:split/2
Richard O'Keefe
ok@REDACTED
Mon Oct 13 06:00:38 CEST 2008
On 13 Oct 2008, at 9:22 am, Robert Virding wrote:
> Can we end the language discussion? :-)
>
> I suggest a function string:split/2 which splits the input string
> with the separator and assumes that there is no separator and either
> end of the string. So:
>
> string:split("ab:de:fg", ":") ==> ["ab","de","fg"]
> string:split(":ab:de:fg:", ":") ==> [[],"ab","de","fg",[]]
This violates the assumption "that there is no separator [at]
either end of the string". To make that assumption is to
assume that something that _looks_ like a separator at either
end _isn't_ one, so
string:split(":ab:de:fg:", ":") ==> [":ab","de","fg:"]
under that assumption.
I _think_ you are talking about the issue that came up
last week with *multicharacter* separators:
string:split("a:::b", "::")
==> ["a:","b"]
or ["a",":b"] -- the code I posted does this
As I recall it, we don't have a resolution for that.
The posted 'unjoin' takes the _leftmost_ occurrence of
a multicharacter separator as a separator, but it could
just as well take the _rightmost_. (Existence proof:
reverse . map reverse . (\ s -> unjoin s sep) . reverse)
> We call it split because it sounds better inspite of it being an
> unjoin.
s/inspite of/in spite of/ or more idiomatically,
s/inspite of/despite/
> This also matches what will be in the re module (if they get it
> right) and what is in the old regexp module.
No, it DOESN'T match it. It CONFLICTS with regexp splitting.
In fact, that's why it is useful!
Call it disjoin/2 if you will (that being an existing English
word). But please do not give it the same name as an existing
function with significantly incompatible behaviour.
>
More information about the erlang-questions
mailing list