1

我正在使用 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”。显示回来时,我想始终将其显示为“米”。

[局限性]

该程序是一个存储许多不同类型数量的大型数据存储程序。用户可以存储任意数量的任意维度(只要在 UCUM 中定义)。

4

1 回答 1

4

您可以使用UnitFormat该类来指定如何打印这些类。使用label方法指定名称,使用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

默认值是您在原始帖子中描述的简短形式。我假设默认值是UCUM 描述的短格式值,但我实际上并没有检查过。

于 2015-04-16T14:52:06.420 回答