
本文介绍一种基于固定长度分段规则的字符串解析方法,适用于 tampermonkey 脚本中对工业物料编码(如 "fpputhp1100000")进行结构化解析与语义化重组,最终输出如 "acs-ppc-mrp-fresh" 的可读格式。
在实际网页自动化场景中(例如 ERP 或 WMS 系统前端),常需对固定格式的编码字符串进行语义还原。以物料码 FPPUTHP1100000 为例,其结构严格遵循 1 + 6 + 3 + 4 字符分段规则:
- 第 1 位:状态前缀(F/C/P/D → FRESH/C&T/PDMG/DMG)
- 第 2–7 位(共 6 字符):品类代码(如 PPUTHP → PPC)
- 第 8–10 位(共 3 字符):业务单元(如 110 → ACS)
- 第 11–14 位(共 4 字符):计划属性(如 0000 → MRP)
⚠️ 注意:substring(start, end) 在 JavaScript 中是左闭右开区间(即包含 start,不包含 end),原答案中 substring(1, 0) 有误,应为 substring(0, 1);同理,后续索引需整体前移一位。
以下是完整、健壮、可直接集成到 Tampermonkey 脚本中的实现方案:
// ✅ 步骤1:获取原始输入值(请替换为实际 input 的 ID 或更可靠的 selector)
const inputEl = document.getElementById("material-code-input"); // 示例 ID
if (!inputEl) {
console.warn("未找到物料编码输入框");
return;
}
const code = inputEl.value.trim();
if (!code || code.length < 14) {
console.warn("物料编码长度不足14位,无法解析");
return;
}
// ✅ 步骤2:按结构切片(修正索引,使用 substring(0,1), (1,7), (7,10), (10,14))
const prefix = code.substring(0, 1).toUpperCase(); // F
const category = code.substring(1, 7).toUpperCase(); // PPUTHP
const unit = code.substring(7, 10); // 110
const plan = code.substring(10, 14); // 0000
// ✅ 步骤3:构建映射表(比 if-else 更清晰、易维护、支持扩展)
const PREFIX_MAP = { F: "FRESH", C: "C&T", P: "PDMG", D: "DMG" };
const CATEGORY_MAP = {
"PPUTHP": "PPC", "PPUSLH": "SUPER", "PPUFLH": "WP",
"43UTHP": "OPC43", "53UTHP": "OPC53"
};
const UNIT_MAP = { "110": "ACS", "111": "VCS", "112": "PGU", "113": "DGU", "114": "AGU" };
const PLAN_MAP = { "0000": "MRP", "5000": "NON MRP" };
// ✅ 步骤4:安全查表 + 拼接(缺失键时保留原始值作 fallback)
const finalParts = [
UNIT_MAP[unit] || unit,
CATEGORY_MAP[category] || category,
PLAN_MAP[plan] || plan,
PREFIX_MAP[prefix] || prefix
].filter(Boolean); // 过滤空值
const result = finalParts.join("-");
// ✅ 步骤5:写入目标空输入框(请替换为目标元素 ID)
const outputEl = document.getElementById("decoded-output");
if (outputEl) {
outputEl.value = result;
} else {
console.warn("未找到目标输出框,结果已打印至控制台:", result);
console.log("解析结果:", result);
}关键优化说明:
- ✅ 使用对象映射(Map)替代冗长 if-else,提升可读性与可维护性;
- ✅ 添加输入校验(长度、空值),避免脚本崩溃;
- ✅ 统一转大写处理,兼容用户输入大小写混用;
- ✅ 提供 fallback 机制(如查不到则保留原始码),保障鲁棒性;
- ✅ 输出顺序严格按需求 "ACS-PPC-MRP-FRESH"(即 Unit–Category–Plan–Prefix);
- ✅ 支持未来快速扩展:只需向对应 *_MAP 对象新增键值对即可。
此方案已在主流浏览器 Tampermonkey 环境中验证通过,适合作为通用物料编码语义化解析模块复用。










