digitalmars.D.learn - std.algorithm
- flamencofantasy (28/28) Nov 30 2017 Hello,
- Meta (36/66) Nov 30 2017 This *almost* works:
- flamencofantasy (2/7) Nov 30 2017 That's what I needed, thanks!
Hello, I have the following csv text; auto input = "Start Date,End Date,Subject,All day event,Categories,Show time as 1/1/2018,1/1/2018,New Year's Day,TRUE,Holiday,3 1/15/2018,1/15/2018,\"Martin Luther King, Jr. Day\",TRUE,Holiday,3 2/19/2018,2/19/2018,President's Day,TRUE,Holiday,3 5/28/2018,5/28/2018,Memorial Day,TRUE,Holiday,3 7/4/2018,7/4/2018,Independence Day,TRUE,Holiday,3 9/3/2018,9/3/2018,Labor Day,TRUE,Holiday,3 11/22/2018,11/22/2018,Thanksgiving Day,TRUE,Holiday,3 11/23/2018,11/23/2018,Day after Thanksgiving,TRUE,Holiday,3 12/24/2018,12/24/2018,Christmas Eve,TRUE,Holiday,3 12/25/2018,12/25/2018,Christmas Day,TRUE,Holiday,3"; What is the most clean compact efficient/lazy way to produce a range that removes the first line and then retains the second and third columns of the following lines, basically producing this; "1/1/2018,New Year's Day 1/15/2018,\"Martin Luther King, Jr. Day\" 2/19/2018,President's Day 5/28/2018,Memorial Day 7/4/2018,Independence Day 9/3/2018,Labor Day,TRUE 11/22/2018,Thanksgiving Day 11/23/2018,Day after Thanksgiving 12/24/2018,Christmas Eve 12/25/2018,Christmas Day" Thanks a bunch
Nov 30 2017
On Thursday, 30 November 2017 at 20:49:36 UTC, flamencofantasy wrote:Hello, I have the following csv text; auto input = "Start Date,End Date,Subject,All day event,Categories,Show time as 1/1/2018,1/1/2018,New Year's Day,TRUE,Holiday,3 1/15/2018,1/15/2018,\"Martin Luther King, Jr. Day\",TRUE,Holiday,3 2/19/2018,2/19/2018,President's Day,TRUE,Holiday,3 5/28/2018,5/28/2018,Memorial Day,TRUE,Holiday,3 7/4/2018,7/4/2018,Independence Day,TRUE,Holiday,3 9/3/2018,9/3/2018,Labor Day,TRUE,Holiday,3 11/22/2018,11/22/2018,Thanksgiving Day,TRUE,Holiday,3 11/23/2018,11/23/2018,Day after Thanksgiving,TRUE,Holiday,3 12/24/2018,12/24/2018,Christmas Eve,TRUE,Holiday,3 12/25/2018,12/25/2018,Christmas Day,TRUE,Holiday,3"; What is the most clean compact efficient/lazy way to produce a range that removes the first line and then retains the second and third columns of the following lines, basically producing this; "1/1/2018,New Year's Day 1/15/2018,\"Martin Luther King, Jr. Day\" 2/19/2018,President's Day 5/28/2018,Memorial Day 7/4/2018,Independence Day 9/3/2018,Labor Day,TRUE 11/22/2018,Thanksgiving Day 11/23/2018,Day after Thanksgiving 12/24/2018,Christmas Eve 12/25/2018,Christmas Day" Thanks a bunchThis *almost* works: import std.algorithm; import std.range; import std.stdio; import std.string; void main() { auto input = "Start Date,End Date,Subject,All day event,Categories,Show time as 1/1/2018,1/1/2018,New Year's Day,TRUE,Holiday,3 1/15/2018,1/15/2018,\"Martin Luther King, Jr. Day\",TRUE,Holiday,3 2/19/2018,2/19/2018,President's Day,TRUE,Holiday,3 5/28/2018,5/28/2018,Memorial Day,TRUE,Holiday,3 7/4/2018,7/4/2018,Independence Day,TRUE,Holiday,3 9/3/2018,9/3/2018,Labor Day,TRUE,Holiday,3 11/22/2018,11/22/2018,Thanksgiving Day,TRUE,Holiday,3 11/23/2018,11/23/2018,Day after Thanksgiving,TRUE,Holiday,3 12/24/2018,12/24/2018,Christmas Eve,TRUE,Holiday,3 12/25/2018,12/25/2018,Christmas Day,TRUE,Holiday,3"; input.lineSplitter() .dropOne() .map!(l => l.splitter(',') .dropOne() .take(2) .joiner(",")) .each!writeln(); } The only problem is the comma in Martin Luther King, Jr. Day, so that line comes out as `1/15/2018,"Martin Luther King`.
Nov 30 2017
On Thursday, 30 November 2017 at 21:49:56 UTC, Meta wrote:On Thursday, 30 November 2017 at 20:49:36 UTC, flamencofantasy wrote:That's what I needed, thanks![...]This *almost* works: [...]
Nov 30 2017