簡體   English   中英

CodenameOne上的String.format替代

[英]String.format alternative on CodenameOne

我試圖將基於Java的庫移植到CodenameOne以便在跨平台項目中使用它,但是它使用了很多Java標准API,而我在CodenameOne中找不到,首先是String.format

我已經閱讀了此問答,並且我了解到有一些實用程序庫可以實現基類中缺少的內容。 是否有實現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許可的和諧項目源,也可以構建一個無塵室實現(我經常發現這很容易)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM