在 freemarker 中格式化 phone 数字

Format phone number in freemarker

我有一个 10 位数的号码,需要显示为 phone 格式的号码。

Eg: 1234567890 needs to be formatted in (123) 456-7890

我已经尝试使用 freemarker 中的内置数字格式化它,但不知何故仍然无法以预期的格式获得它。

我认为 Java SimpleNumberFormat 模式不可能做到这一点,FreeMarker 在您编写 '0.##' 之类的东西时会使用这种模式。但是自定义数字格式没有限制(请参阅 http://freemarker.org/docs/pgui_config_custom_formats.html),例如,您可以拥有类似 ${n?string.@phone} 的东西,它可以执行所有类型的 Java 逻辑。

但是,我想指出,数据模型本身可能存在问题。实际上,phone 数字不是数字,而是字符串(甚至是结构)。它们可以包含重要字符,例如 +(甚至 #)。更不用说/,万一你要拨分机呢