You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript拆分字符串:解决EJS循环中商品名拼接问题

解决EJS渲染粘连商品名的格式化问题

你现在遇到的问题是:数据库返回的多个商品名直接粘连在一起(比如Item name1Item name2),想转成Item name1, Item name2的格式,但之前用split(" ")的思路完全走偏了——这个方法是按空格拆分每个单词,自然会把每个单词都用逗号分隔,结果就变成了Item,name,1Item,name,2,完全不是你要的效果。

咱们先抓核心:你的data[i].ITEMNAME本身是多个商品名无分隔符拼接的字符串,所以第一步得把这些商品名正确拆分,再用, 连接起来。

解决方案一:前端正则拆分(快速调试首选)

如果你的商品名有固定规律(比如每个商品名都是大写字母开头,就像例子里的Item),可以用正向预查正则来精准拆分,不会破坏商品名本身的结构:

// 拿到EJS渲染的粘连字符串
const combinedItems = '<%= data[i].ITEMNAME %>';
// 正则:在大写字母出现的位置前拆分(不切割原字符)
const splitItemList = combinedItems.split(/(?=[A-Z])/);
// 用逗号加空格连接成目标格式
const formattedNames = splitItemList.join(', ');
// 插入表格单元格
document.write("<td>" + formattedNames + "</td>");

举个实际例子,Item name1Item name2会被拆成["Item name1", "Item name2"],再用join(', ')就得到你想要的Item name1, Item name2。如果你的商品名是其他固定开头(比如都是Product),可以把正则改成/(?=Product)/,针对性更强。

解决方案二:后端提前处理(更优雅的实践)

其实更推荐在后端从数据库取数据的时候就处理好格式,这样前端不用写额外的JS逻辑,代码更简洁:

假设你用Node.js做后端,查询数据库后可以直接处理字段:

// 假设从数据库拿到的每条数据是row
row.ITEMNAME = row.ITEMNAME.split(/(?=[A-Z])/).join(', ');
// 再把处理好的data传给EJS模板

然后前端EJS直接渲染就行:

<td><%= data[i].ITEMNAME %></td>

这样前端代码更干净,也避免了前端处理可能出现的兼容问题。

额外提醒

如果你的商品名没有固定的拆分规律(比如大小写混乱、没有统一开头),那得先确认数据库里的商品名为什么会粘连——是不是存储的时候就没加分隔符?最好从源头解决,比如入库时就用, 分隔商品名,这样前后端都不用额外处理。

内容的提问来源于stack exchange,提问作者Gianluca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:27:54