如何移除按/分割的字符串的最后两个分段?
最优字符串处理方案
方法一:数组分割拼接法
这种方法逻辑直观,适合路径分段数固定的场景:
- 先提取所有
<strong>标签内的路径内容,用正则匹配/<strong>(.*?)<\/strong>/g就能批量获取。 - 把每个路径按
/分割成数组,比如abc/def/ghi/test/yvw/syz会变成["abc","def","ghi","test","yvw","syz"]。 - 保留数组的前4个元素(或者直接去掉最后2个,用
slice(0, -2)),再用/拼接成新路径。 - 把原字符串里的旧路径替换成新路径即可。
代码示例(以JavaScript为例):
const originalStr = '<p><strong>abc/def/ghi/test/yvw/syz</strong></p><p><strong>abc/fed/igh/test_123/wuvacv/zyxh</strong></p>'; const result = originalStr.replace(/<strong>(.*?)<\/strong>/g, (match, path) => { const parts = path.split('/'); // 两种写法都可以:取前4段 或 去掉最后2段 const newPath = parts.slice(0, 4).join('/'); // const newPath = parts.slice(0, -2).join('/'); return `<strong>${newPath}</strong>`; }); console.log(result);
方法二:正则直接替换法
如果不确定路径总段数,但确定要去掉最后两段,用正则更灵活:
核心是匹配倒数第二个/之前的所有内容,不需要关心最后两段的具体内容。用正向预查(?=\/.*\/)来定位位置,就能精准截取需要的部分。
代码示例(以JavaScript为例):
const originalStr = '<p><strong>abc/def/ghi/test/yvw/syz</strong></p><p><strong>abc/fed/igh/test_123/wuvacv/zyxh</strong></p>'; const result = originalStr.replace(/<strong>(.*?)<\/strong>/g, (match, path) => { const newPath = path.match(/^(.*)(?=\/.*\/)/)[0]; return `<strong>${newPath}</strong>`; }); console.log(result);
两种方法对比
- 数组分割法:逻辑清晰,新手也能快速理解,适合提前知道需要保留的段数的场景。
- 正则替换法:适应性更强,不管路径总段数是多少,只要要去掉最后两段都能用。
内容的提问来源于stack exchange,提问作者Saduni Jayalath
相关产品推荐
相关产品推荐

