如何用正则表达式给字符串中#后的数字添加固定偏移量?
解决方案
你需要使用String.replaceAll()的回调函数参数来实现这个需求,回调函数可以获取到正则捕获的旧数字值,完成计算后返回新的替换字符串。
完整代码实现
const offset = 100; const matchingExpression = /\#(\d+)/ig; let text = `#41 = AXIS2_PLACEMENT_3D ( 'NONE', #3200, #1543, #6232 ) ; #42 = EDGE_CURVE ( 'NONE', #180, #933, #1234, .T. ) ;`; // 使用回调函数处理替换 text = text.replaceAll(matchingExpression, (match, numStr) => { // 将捕获到的数字字符串转为整数,加上偏移量后拼接# return `#${Number(numStr) + offset}`; }); console.log(text);
关键说明
- 正则
/\#(\d+)/ig中的(\d+)是捕获组,专门提取#后面的数字部分 replaceAll的第二个参数传入回调函数时,第二个参数numStr就是捕获组拿到的旧数字字符串- 把
numStr转为Number类型后加上offset,再拼接#返回,就是替换后的新内容
运行后输出的结果即为目标效果:
#141 = AXIS2_PLACEMENT_3D ( 'NONE', #3300, #1643, #6332 ) ;
#142 = EDGE_CURVE ( 'NONE', #280, #1033, #1334, .T. ) ;
内容的提问来源于stack exchange,提问作者tinytree
相关产品推荐
相关产品推荐

