
本文介绍如何将整数(如 1234)格式化为固定长度、每两位数字加一个空格的字符串(如 "00 00 12 34"),并用于 qr 码生成,适用于 android studio 的 java 开发场景。
本文介绍如何将整数(如 1234)格式化为固定长度、每两位数字加一个空格的字符串(如 "00 00 12 34"),并用于 qr 码生成,适用于 android studio 的 java 开发场景。
在 Android 开发中,有时需要将数字以特定可读格式展示或编码(例如生成带分隔符的 QR 码内容)。原始需求是:将整数 1234 先补零至 8 位(即 "00001234"),再按每两位一组插入空格,最终得到 "00 00 12 34",并与前缀 "12 " 拼接后编码为 QR 码。
关键难点在于:String.format("%08d ", id) 仅能添加前导零和末尾空格,无法实现“组内分隔”。正确做法是先格式化补零,再通过字符串遍历分段插入空格。
以下是推荐的完整实现:
String first = "12 ";
Integer id = 1234;
// 步骤1:补零至8位 → "00001234"
String paddedId = String.format("%08d", id);
// 步骤2:每2位切分并插入空格
StringBuilder spacedId = new StringBuilder();
for (int i = 0; i {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try {
BitMatrix bitMatrix = multiFormatWriter.encode(
first + newId,
BarcodeFormat.QR_CODE,
400, 400
);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
qrcodeIv.setImageBitmap(bitmap);
// 隐藏软键盘
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(minNp.getApplicationWindowToken(), 0);
} catch (WriterException e) {
e.printStackTrace();
Toast.makeText(this, "QR生成失败:" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
✅ 注意事项与优化建议:
- paddedId.length() 必须为偶数(如 %08d 得到 8 位),否则循环中 i + 2 可能越界——代码中已加入 Math.min(...) 防御;
- 若需适配不同分组宽度(如每3位),只需修改循环步长和子串长度;
- 生产环境建议将格式化逻辑封装为独立工具方法,提升复用性与可测试性;
- QR 码内容含空格完全合法,扫描结果会精确还原(验证时可用微信/支付宝扫码确认);
- 错误处理中补充 Toast 提示,增强用户反馈。
通过该方案,输入 1234 将稳定输出 "00 00 12 34",与 "12 " 拼接后生成的 QR 码扫描结果即为:12 00 00 12 34,完全符合预期。











