On 10/24/2019 09:49 AM, Mil58 wrote:
On Thursday, 24 October 2019 at 16:21:47 UTC, welkam wrote:
On Thursday, 24 October 2019 at 15:27:05 UTC, Mil58 wrote:
[...]

void main() {
    File("data.txt", "r+")
        .byLineCopy()
        .array()
        .each!writeln;
}

byLineCopy removes the new lines. If in the future you would need the new line symbol call byLineCopy(Yes.keepTerminator)

Sorry but not working ... Surely i'm not able to insert and adapt to my own script !  :-( Could you, please, modify with the right syntax at the right place ? - Thanks.

The following program works for me.

As I'm on Linux, I had to write a makeFile() function to generate the file to ensure '\r' line endings. (Otherwise I would get '\n'.)

'result's type is string.

import std.stdio;
import std.file;
import std.algorithm : each, joiner, map;
import std.array : array, empty;
import std.conv : text;
import std.typecons : No;

void makeFile(string fileName) {
  const lines = ["abcd", "1234", "03b52h"];
  auto fishier = File(fileName, "w");
  lines.map!(l => l ~ '\r').each!(l => fishier.write(l));
}

void main() {
  enum fileName = "values_test.txt";

  makeFile(fileName);

  auto lines = File(fileName, "r").byLineCopy(No.keepTerminator, '\r');
  auto result = lines.joiner("-").text;
  writeln(result);
}

Ali

Reply via email to