须知少年凌云志,曾许人间第一流。这篇文章主要讲述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";
另一答案【Android String.format()返回问号(??)】String.format将使用默认语言环境的数字,这些数字不一定是0-9。使用允许设置区域设置的版本,并传入
Locale.ROOT
。String.format(Locale.ROOT, "%02d", fileId)
推荐阅读
- 为什么我可以像原始一样测试Wrappers的不等式(我可以为我创建的课程吗? [重复])
- 是否可以通过openjdk在android上运行java应用程序
- 将参数从bootstrapper传递到msi bundle包
- AppSearch的序列号为50 - 对吧()
- 什么是Android Studio主密码()
- 本文教您win10怎样创建宽带连接
- 小马win10激活工具最新推荐
- win10专业版激活工具最新推荐
- 本文教您Win10怎样关机