Skip to content

Instantly share code, notes, and snippets.

@ulve
Created April 11, 2018 15:55
Show Gist options
  • Save ulve/8a1f324dc3664bd4973c7a85030c73fc to your computer and use it in GitHub Desktop.
Save ulve/8a1f324dc3664bd4973c7a85030c73fc to your computer and use it in GitHub Desktop.
parsercombinator på jobbet
public static OrignalAdress ParseLine(string str)
{
var separator = Parse.String(",");
var quote = Parse.Char('\'');
var parsaNull = Parse.String("null").Return("null");
var parsaVärde = from open in quote
from content in Parse.AnyChar.Except(quote).Many()
from close in quote
select new string(content.ToArray());
var parsaNullEllerVärde = parsaNull.Or(parsaVärde);
var parsaVärdeMedSeparator = from v in parsaNullEllerVärde
from s in separator.Optional()
select v;
var parsaHelRad = parsaVärdeMedSeparator.Many().Select(s => new OrignalAdress
{
Id = s.ElementAt(0),
OptLock = s.ElementAt(1),
AdressModell = s.ElementAt(2),
AdressTyp = s.ElementAt(3),
CareOf = s.ElementAt(4),
Utdelningsadress1 = s.ElementAt(5),
Utdelningsadress2 = s.ElementAt(6),
Postnummer = s.ElementAt(7),
Postort = s.ElementAt(8),
Land = s.ElementAt(9),
Utdelningsadress3 = s.ElementAt(10)
});
return parsaHelRad.Parse(str);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment