JS如何移除竖线右侧文本,生成不含后缀的URL别名(Slug)
解决方法:先截断竖线右侧内容再生成Slug
没问题,要实现你想要的效果很简单——只需要在生成slug的常规处理步骤前,先把竖线(|)及右侧的所有内容彻底移除就行,不管右侧是动态变化的公司名还是其他内容。
修改后的函数
function convertToSlug(Text){ return Text .toString() .trim() // 核心改动:按竖线分割取左侧部分,再清除前后空格 .split('|')[0] .trim() .toLowerCase() .replace(/\s+/g, "-") .replace(/[^\w\-]+/g, "") .replace(/\-\-+/g, "-") .replace(/^-+/, "") .replace(/-+$/, ""); }
关键改动说明
我在原函数里新增了两行逻辑:
.split('|')[0]:把输入字符串按竖线拆分成数组,直接取数组第一个元素(也就是竖线左侧的所有内容),不管竖线后面是什么动态内容,都会被直接舍弃。.trim():清除左侧内容前后可能存在的空格(比如原标题里| Company Name前面的空格),避免生成的slug出现多余的连字符。
效果验证
对于你的示例标题This is a page title | Company Name:
- 经过
split('|')[0]后得到This is a page title(注意后面的空格) - 再经过
trim()变成This is a page title - 后续流程和原函数一致,最终生成slug:
this-is-a-page-title
而且这个改动完全兼容没有竖线的标题——如果输入里没有|,split('|')[0]就是整个原字符串,trim()后和原逻辑完全一致,不会影响原有功能。
内容的提问来源于stack exchange,提问作者Darren




