On Saturday, 5 September 2015 at 12:41:37 UTC, Namal wrote:
Thx guys. Now I try out the split function. I read the file as a single string?

auto arr = split(cast(string)read(filename),",");

where the file has "A", "B", "C"

and I get the output ["\"A\"", " \"B\"", " \"C\"\n"]

I can understand that read functions reads the endl but what does it with the quotation marks? how can I modify read so I get just ["A", "B", "C"]

'\' is the escape character and is used to disambiguate start or end of string (") and a quotation mark within the string (\"), the same way as "\n" means newline and not '\' 'n', which would have been "\\n".

So what you have is [`"A"`, ` "B"`, ` "C"\n`], if you use ` for start\stop of string. You say you want ["A", "B", "C"], so you need to remove whitespace. You can do that with std.string.strip. Assuming you also want to remove the quotation marks present in the file, one solution is to use std.string.chomp and std.string.chompPrefix, for example:

string s = cast(string) read(filename);
s.split(",")
 .map!strip
 .map!(s => chomp(s, "\"")
 .map!(s => chompPrefix(s, "\"")
 .writeln
 ;

Reply via email to