std.gregorian contribution

negerns negerns at gmail.com
Mon May 17 10:32:19 PDT 2010


On 5/18/2010 1:03 AM, Tomek Sowiński wrote:
> negerns wrote:
>
>> Also, I have introduced a unjoin() function as a helper function. It
>> splits a string into an array of lines using the specified array of
>> characters as delimiters. I am not sure if there is already an
> existing
>> function that does the same but I could not find it. For lack of a
>> better word I opted for the opposite of the join() function in
> std.string.
>>
>> string[] unjoin(string s, char[] ch)
>> {
>>       uint start = 0;
>>       uint i = 0;
>>       string[] result;
>>
>>       for (i = 0; i<  s.length; i++) {
>>           if (indexOf(ch, s[i]) != -1) {
>>               result ~= s[start..i];
>>               start = i + 1;
>>           }
>>       }
>>       if (start<  i) {
>>           result ~= s[start..$];
>>       }
>>       return result;
>> }
>>
>> unittest {
>>       string s = "2010-05-31";
>>       string[] r = unjoin(s, ['/', '-', '.', ',', '\\']);
>>       assert(r[0] == "2010");
>>       assert(r[1] == "05");
>>       assert(r[2] == "31");
>> }
>
> Thanks, it's useful. There's std.string.split but it takes only one
> delimiter. It'd be nice to have it as an overload that takes any range
> of delims. Yet, a delim can be a string (an array) and there would be
> problems how to understand split(..., "://"). So I suggest calling it
> splitBy to disambiguate. Like it?
>
>
> Tomek

I wish it wouldn't be too long like splitByChar :)
I'm out of ideas.




More information about the Digitalmars-d mailing list