如何在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,但我没有实际检查过。