On Wednesday, 4 October 2023 at 08:11:12 UTC, Joel wrote:
What am I missing?

Splitter returns a forward range so you can't slice the result. You can use take() and drop() instead. Also, converting a string range to int[] doesn't seem to work, but I don't know if it should. Here is a version that works:

```D
import std;

void main() {
    struct DateRem {
        Date date;
        string rem;
string toString() const => text(date.toSimpleString, " ", rem);
    }
    DateRem[] daterem;
    data
        .splitter('\n')
        .filter!(l => l.length && l[0].isDigit)
        .each!((l) {
            auto parts=l
                        .splitter
                        .take(3)
                        .map!(to!int)
                        .array;
            if (parts.length==3) {
                daterem~=DateRem(Date(parts[2],parts[1],parts[0]),
                            l.splitter.drop(3).join(" "));
                }
        });
        daterem.each!writeln;
}

auto data="04 10 2023 17:28, not much
30 9 2023 21:08, very little";
```

Reply via email to