www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Convert output of map() to array of strings

reply Andrey <saasecondbox yandex.ru> writes:
Hello,
I have the following code:
 string[] list;
 string text;
 // ...
 enum pattern = ctRegex!`^[0-9]+$`;
 list = text.split('\n').map!(line => 
 line.matchFirst(pattern).hit);
Compiler says that it can't convert result of map function to string[]... What I want: 1. Split some text into lines using separator '\n'. 2. Apply to each line a regex pattern and extract matched text. 3. Result of these operations assign to variable of type string[]. Tried to do this:
 list = text.split('\n').map!(line => 
 line.matchFirst(pattern).hit).to!(string[]);
but no success...
Aug 15 2018
parent Paul Backus <snarwin gmail.com> writes:
On Wednesday, 15 August 2018 at 13:53:02 UTC, Andrey wrote:
 Hello,
 I have the following code:
 string[] list;
 string text;
 // ...
 enum pattern = ctRegex!`^[0-9]+$`;
 list = text.split('\n').map!(line => 
 line.matchFirst(pattern).hit);
Compiler says that it can't convert result of map function to string[]...
The result of `map` is a lazily-evaluated range. To convert it to an array, use `std.array.array`: import std.array: array; //... list = text .split('\n') .map!(line => line.matchFirst(pattern).hit) .array;
Aug 15 2018