Android String.format() Returns 问号(??)
Android String.format() Returns Question Mark (??)
我有一个应用程序可以从互联网上下载一些文件。源文件名是根据用户选择动态生成的。我使用以下方法创建源文件名。请注意,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的版本,传入Locale.ROOT
.
String.format(Locale.ROOT, "%02d", fileId)
我有一个应用程序可以从互联网上下载一些文件。源文件名是根据用户选择动态生成的。我使用以下方法创建源文件名。请注意,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的版本,传入Locale.ROOT
.
String.format(Locale.ROOT, "%02d", fileId)