<div dir="ltr"><div>import std.stdio;</div><div>import std.algorithm;</div><div><br></div><div>void main()</div><div>{</div><div><br></div><div><br></div><div>auto input  = ["... some text, another text", "some,another","...so,an"];</div><div><br></div><div>auto result = input.filter!(a => a.startsWith("..."))</div><div><span style="white-space:pre">      </span>           .map!(a=>a.splitter(",").map!(a=>a.stripLeft(' ')))</div><div><span style="white-space:pre">           </span>   .map!(a=>a.joiner(","));</div><div>writeln(result);</div><div>}</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 2, 2017 at 1:44 PM, Martin Drašar via Digitalmars-d-learn <span dir="ltr"><<a href="mailto:digitalmars-d-learn@puremagic.com" target="_blank">digitalmars-d-learn@puremagic.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I am struggling to use a lazy range-based code to process large text<br>
files. My task is simple, i.e., I can write a non-range-based code in a<br>
really short time, but I wanted to try different approach and I am<br>
hitting a wall after wall.<br>
<br>
Task: read a csv-like input, take only lines starting with some string,<br>
split by a comma, remove leading and trailing whitespaces from splitted<br>
elements, join by comma again and write to an output.<br>
<br>
My attempt so far:<br>
<br>
alias stringStripLeft = std.string.stripLeft;<br>
<br>
auto input  = File("input.csv");<br>
auto output = File("output.csv");<br>
<br>
auto result = input.byLine()<br>
                   .filter!(a => a.startsWith("..."))<br>
                   .map!(a => a.splitter(","))<br>
                   .stringStripleft // <-- errors start here<br>
                   .join(",");<br>
<br>
output.write(result);<br>
<br>
Needless to say, this does not compile. Basically, I don't know how to<br>
feed MapResults to splitter and then sensibly join it.<br>
<br>
Thank you for any hint.<br>
<span class="HOEnZb"><font color="#888888">Martin<br>
</font></span></blockquote></div><br></div>