首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnitsNet可以解析单元和值的字符串吗?

UnitsNet可以解析单元和值的字符串吗?
EN

Stack Overflow用户
提问于 2018-04-08 17:31:35
回答 1查看 1.1K关注 0票数 1

我正在寻找一个库在我的WinForms应用程序中使用,它将允许用户以文本形式执行单元转换查询,类似于Google允许您这样做。示例:

5 lbs in kg

我安装了UnitsNet,并在ObjectBrowser中搜索“解析”,但只找到了一个UnitsNet.AmbiguousUnitParseException类,这对我的目标来说可能不太好;)

我愿意自己进行一些解析,比如在上面的示例中将"5“、"lbs”和"kg“分开,但我并不认为UnitsNet可以解析"lbs”和"kg“。

我撞错树了吗?UnitsNet看起来是一个很好的、简单的库,可以在.NET中使用,但是是否有一个更好的转换器库可以满足我的需要?

EN

回答 1

Stack Overflow用户

发布于 2018-06-26 18:15:42

更新2020-10-19

使用UnitsNet 4,您可以这样做:

代码语言:javascript
复制
var kgs = UnitConverter.ConvertByAbbreviation(5, "Mass", "lbs", "kg"); // 2.26796185

请参阅动态分析数量并转换为单元-自述

旧答案

没有内置的免费格式文本解析器,但它确实支持解析字符串,如"1 kg""1m"

一个非常简单的文本解析器(解析输入"5 lbs in kg" )可以这样做:

代码语言:javascript
复制
string input = "5 lb in kg";
string[] parts = input.Split(new[] { " in "}, StringSplitOptions.RemoveEmptyEntries);
string massText = parts[0];
string toUnitText = parts[1];

MassUnit toUnit = UnitSystem.Default.Parse<MassUnit>(toUnitText);
Mass mass = Mass.Parse(massText);
double toValue = mass.As(toUnit);

Console.WriteLine(toValue); // 2.26796185

UnitsNet目前缺乏处理数量和单位的能力,因此在本例中,我们只期望使用MassUnit。库可以为您枚举所有单元枚举并返回成功的单元枚举,但到目前为止还没有到位。您可以通过列举一些感兴趣的单元枚举,或者所有这些单位枚举,并尝试解析,直到其中一个成功。

当然,要支持真正自由的文本,需要做更多的工作,但是如果您有一些已知的文本模式,可以使用regex或更复杂的工具提取source valuesource unittarget unit,那么您绝对可以完成这一任务。

P.S:令人惊讶的是,lbs并不是支持磅的缩写,所以我刚刚在UnitsNet v3.102.0中添加了它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49720682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档