JavaScript动态函数提取短横线分隔URL中的城市名称
JavaScript提取带固定后缀URL slug中的城市名
需求说明
需要处理一批酒店类页面的URL路径字符串,所有字符串统一以-hotels作为结尾后缀,城市名本身可能包含短横线,提取时需要保留城市名内部的短横线,仅移除末尾固定的-hotels后缀。
输入样例
karachi-hotels abu-dubai-hotels phi-phi-island-hotels phi-phi-hotels kaula-lampur-hotels
预期输出
karachi abu-dubai phi-phi-island phi-phi kaula-lampur
实现代码
直接用带结尾锚点的正则替换即可,这种写法可以保证只删除字符串最末尾的-hotels后缀,不会误删城市名内部可能出现的相同片段,兼容性最好。
function extractCityFromHotelSlug(slug) { // 正则末尾的$表示仅匹配字符串结尾位置的-hotels return slug.replace(/-hotels$/, ''); }
批量处理示例
如果需要一次性处理整组字符串,直接遍历调用函数即可:
const inputSlugs = [ 'karachi-hotels', 'abu-dubai-hotels', 'phi-phi-island-hotels', 'phi-phi-hotels', 'kaula-lampur-hotels' ]; const result = inputSlugs.map(extractCityFromHotelSlug); console.log(result); // 输出: [ 'karachi', 'abu-dubai', 'phi-phi-island', 'phi-phi', 'kaula-lampur' ]
注意事项
不要使用slug.split('-hotels')[0]这类写法,一旦城市名本身包含-hotels片段(例如虚构地名hotels-creek-hotels),这种写法会提前截断字符串,返回错误结果。使用带$结尾锚点的正则可以完全避免这个问题。
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

