angularsen / UnitsNet

Makes life working with units of measurement just a little bit better.
https://www.nuget.org/packages/UnitsNet/
MIT No Attribution
2.63k stars 383 forks source link

Mass.Parse Error on ToString(MassUnit.ShortTon) and ToString(MassUnit.LongTon) #253

Closed gojanpaolo closed 7 years ago

gojanpaolo commented 7 years ago

These lines throws an error:

Mass.Parse(new Mass().ToString(MassUnit.ShortTon)); Mass.Parse(new Mass().ToString(MassUnit.LongTon));

angularsen commented 7 years ago

Hi, thanks for pointing that out, I was not aware. The culprit seems the regex that tries to extract value and unit from the string: https://github.com/anjdreas/UnitsNet/blob/master/UnitsNet/CustomCode/UnitParser.cs#L61

It currently reads any non-whitespace after the value as the unit, which means it only reads a single word. The units you posted have two word unit abbrevations; "short tn" and "long tn".

If you want to take a stab at fixing the regex, please do. If not I might find some time this weekend to look into this.

gojanpaolo commented 7 years ago

Sure, I'll try doing it tomorrow.

angularsen commented 7 years ago

I didn't see you added the new commit, will review next week as I'm away.

bplubell commented 7 years ago

I verified the issue @gojanpaolo was seeing has been resolved from #265, which is in release 3.68.

Mass.Parse(new Mass().ToString(MassUnit.ShortTon)); Mass.Parse(new Mass().ToString(MassUnit.LongTon)); no longer throw errors, but properly return the parsed Mass.

angularsen commented 7 years ago

Thanks, I also verified this just now.