You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript动态掩码字符串格式化函数复杂场景结果异常排查

问题根因

原函数逻辑存在两个核心缺陷:

  1. 遍历基准错误:以原始输入字符串为遍历维度,每处理1个原始字符最多仅能补1个掩码中的空格,遇到掩码内连续多空格的场景,会直接跳过剩余空格错位填充字符,导致格式错乱。
  2. 指针移动逻辑错误:原逻辑无论是否补了空格,处理完单个原始字符后掩码指针移动步长固定,完全没有对齐掩码的实际位置。
修复方案

调整遍历基准为掩码字符串,逐位处理掩码内容:遇到空格则直接追加空格到结果,遇到非空格占位符则按顺序取原始输入的字符填充,原始字符全部填充完成后直接终止遍历即可。
修复后代码如下:

export const getFormatValue = (raw, mask) => {
  let rawIndex = 0;
  const formatted = [];
  const rawChars = [...raw];

  for (const char of mask) {
    if (rawIndex >= rawChars.length) break;
    
    if (char === ' ') {
      formatted.push(' ');
      continue;
    }
    formatted.push(rawChars[rawIndex]);
    rawIndex++;
  }

  return formatted.join('');
};
用例验证
  • 简单单空格分隔场景:getFormatValue('23', '0 0000 0000 0000') 返回值为 2 3,与预期一致。
  • 连续多空格复杂场景:getFormatValue('ABBCCC', 'A AA AAA') 返回值为 A BB CCC,与预期完全匹配。

内容的提问来源于stack exchange,提问作者karterkortland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:33:20