
本文介绍如何将形如 5.287.341 的带点分隔字符串解析为纯数字序列,并对每个数字按其从左到右的位置顺序(首位补6个零、次位补5个零……末位不补零)生成带尾随零的整数行输出。
本文介绍如何将形如 `5.287.341` 的带点分隔字符串解析为纯数字序列,并对每个数字按其**从左到右的位置顺序**(首位补6个零、次位补5个零……末位不补零)生成带尾随零的整数行输出。
要实现该功能,核心思路是:
-
清理输入:移除所有小数点,得到连续数字字符串(如
"5287341"); -
确定位权:字符串总长度为
L,则第i个字符(0-indexed)应左对齐为L−i位数,即在其后追加L−i−1个'0'; - 逐位输出:遍历每个数字,拼接自身与对应数量的零,换行分隔。
以下是完整、可直接运行的 PHP 示例代码:
<?php
$n = "5.287.341";
$n = str_replace('.', '', $n); // 移除所有点 → "5287341"
$len = strlen($n); // 总位数:7
for ($i = 0; $i < $len; $i++) {
$digit = $n[$i]; // 当前数字字符
$zeros = str_repeat('0', $len - $i - 1); // 后缀零个数:6,5,4,3,2,1,0
echo $digit . $zeros . "\n"; // 输出如 "5000000", "200000", ..., "1"
}
?>✅ 输出结果:
5000000 200000 80000 7000 300 40 1
⚠️ 注意事项:
立即学习“PHP免费学习笔记(深入)”;
- 输入必须为纯数字+英文点构成的字符串(如
"1.23"),不支持负号、空格或逗号; - 若需兼容更复杂输入(如
"1,234.56"),建议先用正则preg_replace('/[^0-9]/', '', $n)提取全部数字; - 本方案使用
str_repeat()替代嵌套循环,性能更优、代码更简洁; - 输出为纯文本(含换行符
\n),若在 HTML 环境中显示,请确保用<pre class="brush:php;toolbar:false;"></pre>包裹或替换\n为<br>(如原答案所用'<br>')。
该方法时间复杂度为 O(n),空间复杂度为 O(1)(不计输出),适用于中等长度数字串(≤10⁴ 位)的快速格式化处理。



















