For fun: Expressive C++ 17 Coding Challenge in D

Christian Köstlin christian.koestlin at gmail.com
Sun Oct 15 21:21:58 UTC 2017


Another solution using dlangs builtin csv support for reading.

import std.csv;
import std.file;
import std.algorithm : map;
import std.range;

string csvWrite(Header, Rows)(Header header, Rows rows)
{
    return header.join(",") ~ "\n" ~ rows.map!(r => header.map!(h =>
r[h]).join(",")).join("\n");
}

int main(string[] args)
{
    auto inputFile = args[1];
    auto columnName = args[2];
    auto replacement = args[3];
    auto outputFile = args[4];

    auto records = readText(inputFile).csvReader!(string[string])(null);
    write(outputFile, csvWrite(records.header, records.map!((r) {
                r[columnName] = replacement;
                return r;
            })));
    return 0;
}

Unfortunately this is still far from the powershell solution :/

cK


More information about the Digitalmars-d-learn mailing list