如何在jscience中获取完整的单位名称
How to get full unit name in jscience
我正在使用 jscience 为我解析一些单位:
Unit<?> meter = Unit.valueOf("m");
System.out.println(meter);
Unit<?> foot = Unit.valueOf("ft");
System.out.println(foot);
打印出来:
m
ft
我想把它打印出来
metre
foot
或者类似这样的东西。实际上,我实际上是在读取这些单位字符串,我无法控制用户键入的内容,因此我希望有些人键入 "m",有些人键入 "metre"。显示回来时,我想始终将其显示为 "Metre".
[限制]
该程序是一个大型数据存储程序,存储许多不同类型的量。用户可以存储任意数量的任意维度(只要它在 UCUM 中定义)。
可以使用UnitFormat
class to specify how these classes get printed. Use the label
method to specify the name, and the alias
方法辅助解析
import java.io.IOException;
import javax.measure.unit.Unit;
import javax.measure.unit.UnitFormat;
public class ScienceUnit {
public static void main(String[] args) throws IOException {
Unit<?> meter = Unit.valueOf("m");
StringBuilder sb = new StringBuilder();
UnitFormat instance = UnitFormat.getInstance();
instance.label(meter, "Metre");
instance.format(meter, sb);
System.out.println(sb.toString());
}
}
输出:
Metre
请注意,如果您从此程序中删除 instance.label
行,则输出为:
m
默认值是您在原始 post 中描述的缩写形式。我假设默认值是short form values described by UCUM,但我没有实际检查过。
我正在使用 jscience 为我解析一些单位:
Unit<?> meter = Unit.valueOf("m");
System.out.println(meter);
Unit<?> foot = Unit.valueOf("ft");
System.out.println(foot);
打印出来:
m
ft
我想把它打印出来
metre
foot
或者类似这样的东西。实际上,我实际上是在读取这些单位字符串,我无法控制用户键入的内容,因此我希望有些人键入 "m",有些人键入 "metre"。显示回来时,我想始终将其显示为 "Metre".
[限制]
该程序是一个大型数据存储程序,存储许多不同类型的量。用户可以存储任意数量的任意维度(只要它在 UCUM 中定义)。
可以使用UnitFormat
class to specify how these classes get printed. Use the label
method to specify the name, and the alias
方法辅助解析
import java.io.IOException;
import javax.measure.unit.Unit;
import javax.measure.unit.UnitFormat;
public class ScienceUnit {
public static void main(String[] args) throws IOException {
Unit<?> meter = Unit.valueOf("m");
StringBuilder sb = new StringBuilder();
UnitFormat instance = UnitFormat.getInstance();
instance.label(meter, "Metre");
instance.format(meter, sb);
System.out.println(sb.toString());
}
}
输出:
Metre
请注意,如果您从此程序中删除 instance.label
行,则输出为:
m
默认值是您在原始 post 中描述的缩写形式。我假设默认值是short form values described by UCUM,但我没有实际检查过。