@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* 商品标题处理工具
|
||||
*
|
||||
* 背景:后端返回的 goodName 常包含「前半段品牌/系列 + 空格 + 后半段 SKU/描述」,
|
||||
* 首页/列表页卡片空间有限,只显示空格前的前半部分。
|
||||
*/
|
||||
|
||||
/**
|
||||
* 截断商品标题:返回第一个空格(或全角空格)之前的内容。
|
||||
* - 防错:null/undefined/非字符串/空串 → 返回 ''
|
||||
* - 没有空格 → 原样返回(去掉首尾空白后)
|
||||
* - 多个连续空格 → 只看第一个
|
||||
* - 全角空格 " " 也视为空格
|
||||
*
|
||||
* @param {string | any} title 原始商品标题(goodName)
|
||||
* @returns {string} 截断后的标题
|
||||
*/
|
||||
function truncateProductTitle(title) {
|
||||
if (title == null) return ''
|
||||
if (typeof title !== 'string') {
|
||||
try {
|
||||
title = String(title)
|
||||
} catch (e) {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
// 去掉首尾空白
|
||||
const s = title.trim()
|
||||
if (!s) return ''
|
||||
|
||||
// 找第一个空格(半角 / 全角 / Tab / NBSP 都算)
|
||||
const match = s.match(/[\s\u3000\u00a0]/)
|
||||
if (!match) return s
|
||||
const idx = match.index
|
||||
if (idx <= 0) return s
|
||||
return s.slice(0, idx)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
truncateProductTitle
|
||||
}
|
||||
Reference in New Issue
Block a user