gpt4 book ai didi

java - CodenameOne 上的 String.format 替代方案

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:40 25 4
gpt4 key购买 nike

我正在尝试将一个基于 Java 的库移植到 CodenameOne,以便在跨平台项目中使用它,但它使用了许多我在 CodenameOne 中找不到的 Java 标准 API,首先是 String.format

我已阅读this Q&A我知道有一些实用程序库可以实现基类中缺少的内容。是否有一个库类实现了String.format

举个例子,我需要做一些类似的事情 String.format("%02d:%02d:%02d", hh, mm, ss);

最佳答案

您可以使用com.codename1.l10n.SimpleDateFormat来格式化时间,尽管我个人只是使​​用实用程序Java代码来格式化,因为它更简单。对于Date,我们会遇到时区的复杂性,这是一个令人头疼的问题。

我通常这样做:

public static String twoDigits(int v) {
return v < 10 ? "0" + v : "" + v;
}

然后:

String t = twoDigits(hh) + ":" + twoDigits(mm) + ":" + twoDigits(ss);

请注意,此代码比 Format 代码更高效。 Format 调用需要解析格式,然后生成结果字符串,这是一个代价高昂的步骤。但在大多数情况下可能不会引人注目。

String.format() 的主要问题是它存在于 String 中。由于 String 是实现的核心部分,因此无论需要如何,像这样的复杂方法都会增加每个应用程序的重量。此外,实现具有如此多细微差别的方法意味着模拟器上的工作方式与设备上的工作方式不同。因此我们不太可能添加该方法。

事实上,在 JavaSE 上,该方法实际上只是 MessageFormat 的一种形式,我们可以在 codename1 l10n 包中添加它。不兼容性不会成为问题,大小/复杂性也不会成为问题。您可以自己实现这一点,如果您愿意,甚至可以作为拉取请求提交。您可以基于 Apache 许可的 Harmony 项目源来实现您的实现,也可以构建一个干净的房间实现(我经常发现这更容易)。

关于java - CodenameOne 上的 String.format 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com