Continuing with this line, it seems that a better definition is as > follows: > > (define (string-split str [sep " "]) > (remove* '("") (regexp-split (regexp-quote (or sep " ")) str))) > > Except that the full definition could be a bit more efficient. > > Three questions: > > 1. Laurent: Does this make more sense? >
Yes, this definitely makes more sense to me. It would then treat (string-split "aXXbXXXXy" "X") just like the " " case. Although if you want to find the columns of a latex line like "x && y & z" you will have the wrong result. Maybe use an optional argument to remove the empty strings? (not sure) > 2. Matthew: Is there any reason to make the #f-as-default part of the > interface? (Even with the new reply I don't see a necessity for > this -- if the target is newbies, then I think that keeping it as a > string is simpler...) > There is probably no need for #f with the new spec. 4. Related to Q3: what does "xy" as that argument mean exactly? > a. #rx"[xy]" > b. #rx"[xy]+" > c. #rx"xy" > d. #rx"(?:xy)+" > Good question. d. would be the simplest case for newbies, but b. might be more useful. I think several other languages avoid this issue by using only one character as the separator. Laurent
_________________________ Racket Developers list: http://lists.racket-lang.org/dev