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

如何对字符串中的数字段做减法并保留前导零用于XPath定位

解决代码

let courseID = "PR001-CC001578";
// 拆分字符串,分别获取前缀和CC后的数字串
let currCourseID = courseID.split('CC');
let prefix = currCourseID[0];
let numStr = currCourseID[1];
// 记录数字串原始长度,用于后续补前导零
const originNumLength = numStr.length;
// 数字减1后补前导零到原始长度
let newNumStr = (Number(numStr) - 1).toString().padStart(originNumLength, '0');
// 拼接得到完整的新ID
let fullNewId = prefix + newNumStr;

console.info("other Course ID:", fullNewId);
var courseIDAssetsPg="//div[contains(text(),'%s')]";
var replaceCCId = courseIDAssetsPg.replace("%s", fullNewId);
var CCIdLoc = element(by.xpath(replaceCCId));
console.info("locator: ", CCIdLoc )

输出结果

other Course ID: PR001-001577
locator : //div[contains(text(),'PR001-001577')]

说明

  • 用padStart()方法可以在字符串开头填充指定字符,直到字符串达到指定长度,刚好解决数字运算后前导零丢失的问题。
  • 拆分字符串后保留了PR001-前缀,拼接后直接符合预期的完整ID格式。

如果运行环境不支持ES6的padStart方法,可以用以下补零函数替代:

function padStart(str, targetLength, padChar) {
  str = str.toString();
  while (str.length < targetLength) {
    str = padChar + str;
  }
  return str;
}
// 调用方式:let newNumStr = padStart((Number(numStr) - 1).toString(), originNumLength, '0')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:15:04