Android String.format()返回问号(??)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android String.format()返回问号(??)相关的知识,希望对你有一定的参考价值。

我有一个从互联网下载一些文件的应用程序。源文件名是根据用户选择动态生成的。我使用以下方法来创建源文件名。请注意,fileId是一个整数(1-99)。

final String fileName = "file_" + String.format("%02d", fileId) + "_download.jpg";

问题是我看到一些用户无法下载文件(当然他们留下1个开始评级:()。当我检查我的服务器日志时,我看到一些下载请求附带文件名,如file_??_download.jpg。看起来String.format()已经返回??而不是两位数。

我到处搜索,找不到解决方法。谁能告诉我这段代码有什么问题?我甚至无法在我的任何设备上重新产生此错误。

谢谢!

答案

你必须这样做:

final String fileName = "file_" + String.format("%d", fileId) + "_download.jpg";

要么

final String fileName = "file_" + fileId + "_download.jpg";

如果你真的只想要最后两位数字,那就去做吧:

int formattedFileId = fileId % 100;
final String fileName = "file_" + (formattedFileId < 10 ? '0' : '') + String.format("%d", formattedFileId) + "_download.jpg";

要么

int formattedFileId = fileId % 100;
final String fileName = "file_" + (formattedFileId < 10 ? '0' : '') + formattedFileId + "_download.jpg";
另一答案

String.format将使用默认语言环境的数字,这些数字不一定是0-9。使用允许设置区域设置的版本,并传入Locale.ROOT

String.format(Locale.ROOT, "%02d", fileId)

以上是关于Android String.format()返回问号(??)的主要内容,如果未能解决你的问题,请参考以下文章

string.format()的用法?

string.format用法

使用String.format()格式化字符串,java自动补全自增长字符串

String.format

Android开发之Url的拼接

android xml字符串通配